如何在JavaFX中使用treeview在主文件夹中创建许多文件夹?

问题描述 投票:0回答:1

为了清楚起见,我正在创建一个树视图,该树视图将在用户创建文件夹后实例化,并且该文件夹将作为树项添加。

我目前有这个:

TreeView treeView = new TreeView();

// Create new folder
MenuItem menuItem1 = new MenuItem("Create New Folder");
menuItem1.setOnAction(e -> {
    System.out.println("Please name your directory:");
    Scanner in = new Scanner(System.in);
    String strFolder = in. nextLine();
    createFolder(strFolder); // Create folder
    TreeItem rootFolder = new TreeItem(strFolder); // Create new TreeItem
    treeView.setRoot(rootFolder); // Replace old folder with new one
    // rootFolder.getChildren().add(rootFolder);
    // rootItem.getChildren().add(rootFolder);

});

在treeView之后,我声明了一个新的Menu Item,该菜单项在单击后将触发事件。

该事件将要求用户提供一个名称,以用作treeView的根文件夹。现在就可以了。

现在我遇到的麻烦是,如何在创建的根文件夹内创建更多文件夹,并在treeView中将它们显示为子文件夹?

到目前为止,我的代码仅将旧的根文件夹替换为创建的新根文件夹。而不是再次设置根文件夹,我该怎么做,使其仅将那些文件夹添加到第一个文件夹中,并再次将它们显示在treeView中作为子文件夹?

我自己解释了吗?

谢谢。

javafx treeview javafx-8
1个回答
0
投票

仅将TreeItem添加到TreeItem的子列表中。如果未选择任何项目,则以下示例替换根,否则将新项目添加为所选项目的子项目:

TreeView<String> treeView = new TreeView<>(); // never use raw type without good reason

// Create new folder
MenuItem menuItem1 = new MenuItem("Create New Folder");
menuItem1.setOnAction(e -> {
    TextInputDialog dialog = new TextInputDialog(); // replacing console input with dialog here

    dialog.setHeaderText("Please name your directory:");
    String strFolder = dialog.showAndWait().orElse(null);

    if (strFolder != null) {
        TreeItem<String> newFolder = new TreeItem<>(strFolder); // Create new TreeItem

        TreeItem<String> selection = treeView.getSelectionModel().getSelectedItem();

        createFolder(strFolder); // Create folder ; TODO: make dependent on parent???

        if (selection == null) {
            treeView.setRoot(newFolder); // Replace old folder with new one
        } else {
            selection.getChildren().add(newFolder);
            selection.setExpanded(true); // make sure we're able to see the new child
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.