【发布时间】:2012-09-15 15:57:10
【问题描述】:
我开始使用 JavaFX 并希望使用新的树形视图(因为您可以使用多个图标来表示您的数据 - 这是我希望利用的)。
我创建了一个基本的表单/场景,上面有一个树视图和一个按钮。当按下此按钮时,我希望填充树视图。
现在,我查看的所有示例都是在代码中生成表单/场景并且树视图绑定到该控件的位置....我如何使用 Scene builder 获得预先设计的表单并从外部代码填充它?
【问题讨论】:
我开始使用 JavaFX 并希望使用新的树形视图(因为您可以使用多个图标来表示您的数据 - 这是我希望利用的)。
我创建了一个基本的表单/场景,上面有一个树视图和一个按钮。当按下此按钮时,我希望填充树视图。
现在,我查看的所有示例都是在代码中生成表单/场景并且树视图绑定到该控件的位置....我如何使用 Scene builder 获得预先设计的表单并从外部代码填充它?
【问题讨论】:
您可以在控制器类中使用以下代码。在 FXML 文件中,您需要将 FXID 设置为 selectionTreeView。在 JDK 8u5 中测试,它工作正常。
@FXML
TreeView selectionTreeView;
@FXML
private void handleButtonAction(ActionEvent event) {
createTree();
}
public void createTree(String... rootItems) {
//create root
TreeItem<String> root = new TreeItem<>("Root");
//root.setExpanded(true);
//create child
TreeItem<String> itemChild = new TreeItem<>("Child");
itemChild.setExpanded(false);
//root is the parent of itemChild
root.getChildren().add(itemChild);
selectionTreeView.setRoot(root);
}
【讨论】:
在场景构建器的控件根节点上设置类名(包括包)。如果单击,则转到右侧的代码选项卡,它是顶部字段。
现在在控件中的 TreeView 上设置一个 ID。
现在在控制器对象中添加一个 TreeView 字段,变量名称应该与您在场景构建器中设置的 TreeView ID 相同。使用@FXML 注释字段。
现在当 FXML 被加载时,控制器被创建并且 TreeView 字段被设置。
【讨论】: