在TreeView中添加树分支和叶子

时间:2017-06-02 16:05:40

标签: javafx

我正在使用treeView程序,其中,用户需要在这里添加分支和叶子是我的例子

public class Main extends Application
{
    private BorderPane border;
    @Override
    public void start(Stage primaryStage)
    {   
        border = new BorderPane();    
        Scene scene = new Scene(border,200,200); 
        primaryStage.setTitle("BorderPane");
        primaryStage.setScene(scene);
        primaryStage.show();    

        TreeItem<String> tree = new TreeItem<String>("Root");      
        TreeItem<String> item1 = new TreeItem<String>("Branch");
        item1.getChildren().add(new TreeItem<String>("Leaf"));
        item1.setExpanded(true); 
        tree.setExpanded(true);
        tree.getChildren().addAll(item1);
        TreeView<String> treeView  = new TreeView<String>(tree);

        treeView.setEditable(true);
        treeView.setCellFactory(new Callback<TreeView<String>,TreeCell<String>>(){
            @Override
            public TreeCell<String> call(TreeView<String> arg0) {
                return new AddMenuTreeCell();
            }
        });

        VBox vbox =new VBox(2);
        vbox.setPadding(new Insets(5));
        VBox.setVgrow(treeView, Priority.ALWAYS);
        vbox.getChildren().addAll(treeView);      
        border.setLeft(vbox);
    }

    private static class AddMenuTreeCell extends TextFieldTreeCell<String> {
        private ContextMenu menu = new ContextMenu();
        private TextField textField;
        public AddMenuTreeCell() {

            MenuItem addItem1 = new MenuItem("Insert Branch");
            MenuItem addItem2 = new MenuItem("Insert Leaf");
            menu.getItems().addAll(addItem1,addItem2);
            addItem1.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent arg0) {
                    TreeItem<String> newBranch = 
                            new TreeItem<String>("Brunch");
                                getTreeItem().getChildren().add(newBranch);
                }
            });
            addItem2.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent arg0) {
                    TreeItem<String> newLeaf = 
                            new TreeItem<String>("leaf");
                                getTreeItem().getChildren().add(newLeaf);
                }
            });
        }

        @Override
        public void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
                    if (!empty && getTreeItem().getParent() == null){
                        setContextMenu(menu);
                    }
                }
        }
} 

使用此用户可以添加Branch和Leaf。

但问题是,如果用户添加分支,它应该像&#34; Branch1&#34;下一个添加的分支应该是&#34; Branch2&#34;,&#34; Branch3&#34;,......对于任何分支中添加的叶子都有相同的数字。

以后用户可以将不同的任务分配给不同的分支和叶子。请

谢谢

0 个答案:

没有答案