如何在 JavaFX 中使用树视图在主文件夹中创建多个文件夹?
How to create many folders inside a main folder using treeview in JavaFX?
为了清楚起见,我正在创建一个树视图,它会在用户创建文件夹后自行实例化,并且该文件夹将作为树项添加。
我目前有这个:
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 中作为子文件夹?
我解释清楚了吗?
谢谢。
只需将 TreeItem
(s) 添加到 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
}
}
});
为了清楚起见,我正在创建一个树视图,它会在用户创建文件夹后自行实例化,并且该文件夹将作为树项添加。
我目前有这个:
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 中作为子文件夹?
我解释清楚了吗?
谢谢。
只需将 TreeItem
(s) 添加到 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
}
}
});