【问题标题】:finding child node from a TreeView and getting content of that node从 TreeView 中查找子节点并获取该节点的内容
【发布时间】:2015-11-11 08:57:12
【问题描述】:

这是我的问题。 我创建了一个硬编码的树视图,其中包含一些项目。 其中有节点和叶节点。 我将如何找到所选节点是叶节点。? 我想将该节点的内容传递到新选项卡。

public void SetTreeSample(){

    TreeItem<String> rootItem = new TreeItem<>("elan/6");
    rootItem.setExpanded(true);

    TreeItem<String> item = new TreeItem<>("Verkauf"); 

    TreeItem<String> itemBeleg = new TreeItem<>("Belegbearbeitung");
    itemBeleg.getChildren().add(new TreeItem<>("Verkaufsbeleg anlegen"));
    itemBeleg.getChildren().add(new TreeItem<>("Verkaufsbelege bearbeiten"));
    itemBeleg.getChildren().add(new TreeItem<>("Verkaufsbeleg abrufen"));
    item.getChildren().add(itemBeleg);

    TreeItem<String> itemXML = new TreeItem<>("XML-Schnittstelle");
    item.getChildren().add(itemXML);

    TreeItem<String> itemKun = new TreeItem<>("kunden");
    item.getChildren().add(itemKun);
    TreeItem<String> itemKund = new TreeItem<>("kunden-Auskun ft");
    item.getChildren().add(itemKund);
    TreeItem<String> itemArt = new TreeItem<>("Artikel-Auskunft");
    item.getChildren().add(itemArt);

    rootItem.getChildren().add(item);

    item = new TreeItem<>("Kassenprogramme");
    item.getChildren().add(new TreeItem<>("Kassenprogramm"));
    item.getChildren().add(new TreeItem<>("Gutscheinverwaltung"));
    rootItem.getChildren().add(item);

    item = new TreeItem<>("Versand");
    rootItem.getChildren().add(item);

    item = new TreeItem<>("Bestandsfutrung");
    rootItem.getChildren().add(item);

    TreeView<String> treeview = new TreeView<>(rootItem);

    StackPane root = new StackPane();
    root.getChildren().add(treeview); 

    treeview.setOnMouseClicked(new EventHandler<MouseEvent>()
    {
        @Override
        public void handle(MouseEvent mouseEvent)
        {            
            if(mouseEvent.getClickCount() == 2)
            {
               TreeItem<String> item = treeview.getSelectionModel().getSelectedItem();

               AddTab(item.getValue());
            }
        }
    });

    rootLayout.setLeft(root);

}

public void AddTab(String Text){
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(SampleApp2.class.getResource("view/NewAP.fxml"));

    TabPane tabPane = (TabPane) rootLayout.getCenter();
    tabPane.setTabClosingPolicy(TabClosingPolicy.ALL_TABS);
     Tab tabdata = new Tab();
     Label tabALabel = new Label(Text);
     tabdata.setGraphic(tabALabel);

     tabPane.getTabs().add(tabdata);

}

【问题讨论】:

  • 我不太清楚您所说的“我将如何找到选定的节点是叶节点?”是什么意思。但除此之外,这看起来像是 stackoverflow.com/questions/27894108/… 的副本
  • 叶节点?好像有多个。究竟是什么问题? TreeItem&lt;String&gt; item = treeview.getSelectionModel().getSelectedItem(); 似乎是获得选中的TreeItem 的好方法。还是您无法确定 TreeItem 是否为叶子(在 javadoc 中查找此内容需要

标签: javafx tabs treeview


【解决方案1】:

TreeItem 上有一个方法 isLeaf()。

TreeItem<String> selectedItem = treeview.getSelectionModel().getSelectedItem();
if (selectedItem.isLeaf()) {
    AddTab(item.getValue());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多