我正在用javafx设计一个独立的应用程序(带有scenebuilder 8的FXML),现在我需要在FXML中创建一个CheckBoxTreeItem(查看下图)。
方格树
在搜索时,我得到了一个链接“https://docs.oracle.com/javase/8/scene-builder-2/user-guide/library-panel.htm这有助于我将定制的CheckBoxTreeItem java文件导入到场景生成器中,但在场景生成器中导入JAR分析报告后,会抛出一条错误消息“不是节点”。
有人能帮我解决这个问题吗?或者有没有其他方法可以在FXML中创建CheckBoxTreeItem。
下面是定制的CheckBoxTreeItem代码:
package Action;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.CheckBoxTreeCell;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ComboboxTree extends Application {
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) {
CheckBoxTreeItem<String> rootItem =
new CheckBoxTreeItem<String>("Total list");
rootItem.setExpanded(true);
final TreeView tree = new TreeView(rootItem);
tree.setEditable(true);
tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
for (int i = 0; i < 8; i++) {
final CheckBoxTreeItem<String> checkBoxTreeItem =
new CheckBoxTreeItem<String>("List " + (i+1));
rootItem.getChildren().add(checkBoxTreeItem);
}
tree.setRoot(rootItem);
tree.setShowRoot(true);
StackPane root = new StackPane();
root.getChildren().add(tree);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
在某种程度上,做你要求的事情没有任何意义。FXML的目的是定义应用程序的布局(即视图)。CheckBoxTreeItem
s和TreeItem
s通常不是布局的一部分;它们是应用程序中显示的数据的一部分(即模型的一部分)。
话虽如此,FXML只是实例化对象并将它们链接在一起的一种方式,所以没有理由不能使用FXML来做到这一点。以下是你发布的Java的等价物:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.TreeView?>
<?import javafx.scene.control.CheckBoxTreeItem?>
<?import javafx.scene.control.cell.CheckBoxTreeCell?>
<HBox xmlns:fx="http://javafx.com/fxml/1">
<TreeView editable="true">
<root>
<CheckBoxTreeItem value="Total list" expanded="true">
<children>
<CheckBoxTreeItem value="List 1"/>
<CheckBoxTreeItem value="List 2"/>
<CheckBoxTreeItem value="List 3"/>
<CheckBoxTreeItem value="List 4"/>
<CheckBoxTreeItem value="List 5"/>
<CheckBoxTreeItem value="List 6"/>
<CheckBoxTreeItem value="List 7"/>
<CheckBoxTreeItem value="List 8"/>
</children>
</CheckBoxTreeItem>
</root>
<cellFactory>
<CheckBoxTreeCell fx:factory="forTreeView"/>
</cellFactory>
</TreeView>
</HBox>
你可以用它来测试
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
primaryStage.setScene(new Scene(FXMLLoader.load(getClass().getResource("TreeWithCheckBoxItems.fxml")), 600, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我强烈怀疑您能否将此FXML与场景生成器一起使用,因为场景生成器是一种用于设计布局的工具,而不是用于操作应用程序数据内容的工具。
实际上,我想使用Javafx中的标签创建一个导航列表。我可以为每个标签分配fx: id并在控制器类中创建标签。 但我想做的是,我想在控制器类中创建一个标签数组,而不是控制器类中的十个标签对象,这是我在场景生成器中创建的。 谁能帮我想个办法。。。
我是新来的社区,我真的不知道如何在这里寻求帮助。我试图为我的警报弹出窗口创建一个关闭按钮,但我遇到了语法错误。我还想在窗口完全关闭之前执行一些操作。 这是调用窗口出现的驱动程序: 这是警报的控制器 这是警报的FXML文件 我还尝试使用setOnAction,但发生了相同的错误。 非常感谢!!
本文向大家介绍如何在JavaFX中创建RadioMenuItem?,包括了如何在JavaFX中创建RadioMenuItem?的使用技巧和注意事项,需要的朋友参考一下 菜单是提供给用户的选项或命令的列表,通常菜单包含执行某些操作的项目。菜单的内容称为菜单项,菜单栏包含多个菜单。 JavaFx支持三种菜单项,即-检查菜单项,自定义菜单项和单选菜单项。 RadioMenuItem RadioMenuI
本文向大家介绍如何在JavaFX中创建ButtonBar?,包括了如何在JavaFX中创建ButtonBar?的使用技巧和注意事项,需要的朋友参考一下 以下示例演示了ButtonBar的创建。 输出结果
本文向大家介绍如何在JavaFX中创建MenuButton?,包括了如何在JavaFX中创建MenuButton?的使用技巧和注意事项,需要的朋友参考一下 一个菜单 是呈现给用户的选项或命令的列表,通常菜单中包含的执行某些操作的项目。菜单的内容称为菜单项,菜单栏包含多个菜单。 通常,按钮在用户界面应用程序中进行控制,单击该按钮将执行相应的操作。 MenuButton是一个简单的按钮,在单击它时显示
本文向大家介绍如何在JavaFX中创建ProgressIndicator?,包括了如何在JavaFX中创建ProgressIndicator?的使用技巧和注意事项,需要的朋友参考一下 以下示例演示了 ProgressIndicator的创建。 输出结果