当前位置: 首页 > 知识库问答 >
问题:

如何刷新阶段,当我点击一个树节点

孔欣荣
2023-03-14

我有一棵树,它可以生成包含数据的小树。

public TitledPane createConnectionsList(String title) {

        TreeItem<String> rootNode = new TreeItem<>("Connection 1", null);

        rootNode.setExpanded(true);
        for (ConnectionData data : connectionDataList) {
            TreeItem<String> connLeaf = new TreeItem<>(data.getDBGWName());
            boolean found = false;
            for (TreeItem<String> depNode : rootNode.getChildren()) {
                if (depNode.getValue().contentEquals(data.getTableName())) {
                    depNode.getChildren().add(connLeaf);
                    found = true;
                    break;
                }
            }
            if (!found) {
                TreeItem<String> depNode = new TreeItem<>(data.getTableName(), null);
                rootNode.getChildren().add(depNode);
                depNode.getChildren().add(connLeaf);
            }
        }

        VBox box = new VBox();
        final Scene scene = new Scene(box, 700, 600);
        scene.setFill(Color.LIGHTGRAY);

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

        treeView.setShowRoot(true);
        treeView.setEditable(true);

        AnchorPane content = new AnchorPane();
        // Set aligment - fill the accordion with the three content

        AnchorPane.setLeftAnchor(treeView, 0d);
        AnchorPane.setRightAnchor(treeView, 0d);
        AnchorPane.setBottomAnchor(treeView, 0d);
        AnchorPane.setTopAnchor(treeView, 0d);

        content.getChildren().add(treeView);
        // Add to TitelPane
        TitledPane pane = new TitledPane(title, content);
        return pane;
    }

public List<ConnectionData> connectionDataList;

    public static class ConnectionData {

        private String DBGWName;
        private String TableName;

        public ConnectionData(String DBGWName, String TableName) {

            this.DBGWName = DBGWName;
            this.TableName = TableName;

        }

        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;
        }
    }

connectionDataList = Arrays.<ConnectionData>asList(
                new ConnectionData("Table 1", "DBGW1"),
                new ConnectionData("Table 2", "DBGW1"),
                new ConnectionData("Table 3", "DBGW1"),
                new ConnectionData("Table 4", "DBGW1"),
                new ConnectionData("Table 5", "DBGW1"),
                new ConnectionData("Table 6", "DBGW2"),
                new ConnectionData("Table 7", "DBGW2"),
                new ConnectionData("Table 8", "DBGW2"),
                new ConnectionData("Table 9", "DBGW2"),
                new ConnectionData("Table 10", "DBGW2"),
                new ConnectionData("Table 11", "DBGW2"),
                new ConnectionData("Table 12", "DBGW3"));

我想当我点击主节点Connection 1打开一个对话框。我还想当我点击DBGW1子节点打开一个新的对话框窗口,当我点击子节点Table打开3td简单对话框。我必须在哪里以及如何放置事件侦听器,以便调用Java方法或刷新主阶段。

共有1个答案

应俭
2023-03-14

为了让你了解情况:treeItem是一个东西,它被添加到树结构中。之后,将为每个treeItem创建一个treeCell。从技术上讲,默认情况下有一个默认的treeCellFactory,但您可以创建自己的工厂,这将为每个treeItem创建一个TreeCell。

对于每个treeCell,您可以手动添加一个侦听器,它将侦听交互事件,并相应地对它们做出反应。

但是,交互的情况很简单:可以在当前关注的节点或当前选定的节点上添加侦听器。(看来,聚焦节点是最佳选择)。

所以,使用以下方法:

    TreeView tv = new TreeView();
    tv.getFocusModel().focusedIndexProperty().addListener(...);
    tv.getFocusModel().focusedItemProperty().addListener(...);
    tv.getSelectionModel().selectedIndexProperty().addListener(...);
    tv.getSelectionModel().selectedItemProperty().addListener(...); 
 类似资料:
  • 因此,我有一个JavaFX2.0应用程序,主窗口在启动时显示。我想做的是让用户按下一个按钮,然后在主窗口旁边弹出另一个窗口。 所以,我想在主舞台左侧“固定”一个未装饰的舞台。 我知道如何制作窗口,以及如何使其不被装饰,新窗口工作正常,我只想使其在移动窗口时相对于主窗口(或舞台,无论您喜欢称之为哪个)保持相同的位置。

  • 我想创建一个下拉列表和一个按钮,功能是当我点击按钮,然后按钮不是可点击的意思是禁用,它是显示,首先点击下拉列表。然后按钮是启用的。我们如何使我尝试但没有发生,我没有太多的想法。所以任何机构帮助我解决这个问题。 我试过这个jquery函数我对jquery不太了解。所以谁来帮帮我。

  • 如何在成功提交数据时将数据从本地数据库刷新到RecyclerView?我使用应用程序上的选项卡。函数提交数据,如果成功,数据将存储在中。 关于的数据将在中显示。但是发生的情况是,我必须滑动,然后滑动到,然后滑动到我的上成功显示的新的数据。 主要活动: 一切都很顺利,只是希望表单提交的时候数据能显示出来,可以直接在第3页签上查看

  • 如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?

  • 我最近正在评估图形数据库或任何其他数据库的一个特定要求: 通过一个查询中节点的直接子节点及其所有直接和间接子节点的聚合属性检索每个节点的前n个子节点的能力。结果应返回正确的层次结构。 实例 < code >每个节点都有一个属性,即它有多少个直接子节点。并且该树不超过8层。假设我想运行整个树的查询,通过每个级别的所有节点,它的前2个子节点有最多的直接和间接子节点。它将为我们提供以下信息: 我想知道是

  • 我有这段代码,它在一个远程Java类中创建新的tab。 你能告诉我,当我双击树节点时,我如何修改代码以打开新选项卡。在我的代码中,当我单击一次时,选项卡就会打开。我需要什么事件处理程序?