【问题标题】:How to create JavaFX tree sub nodes如何创建 JavaFX 树子节点
【发布时间】:2013-04-29 10:06:32
【问题描述】:

我想创建带有子节点的 JavaFX。我设法创建了非常简单的树:

public class SQLBrowser extends Application {

    //////
    public List<ConnectionsListObj> connListObj = new ArrayList<>();

    public class ConnectionsListObj {

        private String connectionName;
        private String dbgwName;
        private String tableName;

        public ConnectionsListObj(String connectionName, String dbgwName, String tableName) {

            this.connectionName = connectionName;
            this.dbgwName = dbgwName;
            this.tableName = tableName;

        }

        public String getConnectionName() {
            return connectionName;
        }

        public void setConnectionName(String connectionName) {
            this.connectionName = connectionName;
        }

        public String getDbgwName() {
            return dbgwName;
        }

        public void setDbgwName(String dbgwName) {
            this.dbgwName = dbgwName;
        }

        public String getTableName() {
            return tableName;
        }

        public void setTableName(String tableName) {
            this.tableName = tableName;
        }
    }
    ///// -------------------------

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group());
        stage.setTitle("Button Sample");
        stage.setWidth(300);
        stage.setHeight(190);
        VBox vbox = new VBox();
        vbox.setLayoutX(20);
        vbox.setLayoutY(20);

        ////////// Insert data

        connListObj.add(new ConnectionsListObj("Connection 1", "DBGW1", "Table 1"));
        connListObj.add(new ConnectionsListObj("Connection 1", "DBGW1", "Table 2"));
        connListObj.add(new ConnectionsListObj("Connection 1", "DBGW2", "Table 3"));
        connListObj.add(new ConnectionsListObj("Connection 1", "DBGW2", "Table 4"));

        //////////  Display data

        TreeItem<String> root = new TreeItem<>("Connection Name");
        root.setExpanded(true);

        for (ConnectionsListObj connection : connListObj) {
            // Add subnode DBGW name
            String DBName = connection.dbgwName;

            root.getChildren().addAll(new TreeItem<>(connection.dbgwName));

        }

        TreeView<String> treeView = new TreeView<>(root);

        /////////

        vbox.getChildren().add(treeView);
        vbox.setSpacing(10);
        ((Group) scene.getRoot()).getChildren().add(vbox);
        stage.setScene(scene);
        stage.show();
    }
} 

但我不知道如何在节点中创建子节点。我想与几个 DBGW 和每个 DBGW 建立一个连接,其中包含从 ArrayList 生成的表列表。

connListObj.add(new ConnectionsListObj("Connection 1", "DBGW1", "Table 1"));
connListObj.add(new ConnectionsListObj("Connection 1", "DBGW1", "Table 2"));
connListObj.add(new ConnectionsListObj("Connection 1", "DBGW2", "Table 3"));
connListObj.add(new ConnectionsListObj("Connection 1", "DBGW2", "Table 4"));

但是我如何创建一个循环来迭代到 ArrayList 并生成三个。

附:我以这种方式更新了代码:

TreeItem<String> root = new TreeItem<>("Connection Name");
        root.setExpanded(true);

        for (ConnectionsListObj connection : connListObj) {
            // Add subnode DBGW name
            String DBName = connection.dbgwName;

            TreeItem sb;

            root.getChildren().addAll(sb = new TreeItem<>(connection.dbgwName));

            //if (DBName.equals(oldDBName)) {

            sb.getChildren().add(new TreeItem<>(connection.tableName));

            //}

        }

        TreeView<String> treeView = new TreeView<>(root);

得到这个结果:

如何根据DBGWtables进行排序。

【问题讨论】:

  • 当我做对了,你想要一个 dbgw1 项目然后 table1table2 作为孩子而不是两个 dbgw1

标签: java javafx-2 javafx


【解决方案1】:

TreeItem 有一个子级列表。您必须向其中添加子节点:

parentNode.getChildren().add(yourNode);

有关完整示例,请参阅 Using JavaFX UI Controls - Tree View

【讨论】:

  • 是的,我设法创建了子节点。但现在的问题是如何正确排序它们?
  • @PeterPenzov 它们按您添加它们的顺序排序。
  • 当我们在 javafx2 中添加/删除 TreeItems(最好直到深度 3)时,有没有办法保持 TreeItems 的排序?我可以在 javafx8 中看到一些 SortedList,但遗憾的是,迁移到 jdk8 对我来说是不可行的。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多