从TreeView中查找子节点并获取该节点的内容

时间:2015-11-11 08:57:13

标签: javafx tabs treeview

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

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

}

1 个答案:

答案 0 :(得分:0)

TreeItem上有一个方法isLeaf()。

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