【问题标题】:Creating a JavaFX TreeView using Scene Builder使用 Scene Builder 创建 JavaFX TreeView
【发布时间】:2012-09-15 15:57:10
【问题描述】:

我开始使用 JavaFX 并希望使用新的树形视图(因为您可以使用多个图标来表示您的数据 - 这是我希望利用的)。

我创建了一个基本的表单/场景,上面有一个树视图和一个按钮。当按下此按钮时,我希望填充树视图。

现在,我查看的所有示例都是在代码中生成表单/场景并且树视图绑定到该控件的位置....我如何使用 Scene builder 获得预先设计的表单并从外部代码填充它?

【问题讨论】:

    标签: java javafx treeview


    【解决方案1】:

    您可以在控制器类中使用以下代码。在 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);
    }
    

    【讨论】:

      【解决方案2】:

      在场景构建器的控件根节点上设置类名(包括包)。如果单击,则转到右侧的代码选项卡,它是顶部字段。

      现在在控件中的 TreeView 上设置一个 ID。

      现在在控制器对象中添加一个 TreeView 字段,变量名称应该与您在场景构建器中设置的 TreeView ID 相同。使用@FXML 注释字段。

      现在当 FXML 被加载时,控制器被创建并且 TreeView 字段被设置。

      【讨论】:

      • 您好,非常感谢您的回复。看起来我所做的一切都是正确的,因为我已经用你提到的内容仔细检查了我的代码,所以我认为我现在遇到的问题是场景。我的场景是从加载了空树视图的 FXML 文件加载和设置的。随后,我从 netbeans 中打开了“FXML 登录演示”,并通过“replaceSceneContent”方法刷新了场景。看起来我必须在发生变化时刷新或重新加载场景......这看起来是否正确?
      • 是的,我认为您需要重新启动,JavaFX 不会自动识别 FXML 文件中的更改并重新加载,尽管您可以自己实现一些东西来实现这一点。
      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      相关资源
      最近更新 更多