У меня есть проблема, которую я не знаю, как решить и не смогли найти некоторые подсказки в Интернете, как хорошо, но проблема должна быть тривиальной ...Как сделать каталоги с возможностью расширения в JavaFX TreeView
У меня есть TreeView<File>
который я хотел бы заполнить списком каталогов и файлов на основе заданного пути. Проблема в том, что каталоги добавляются в дерево, но не могут быть расширены, поэтому я не могу отображать файлы внутри.
Вот некоторые из моего скромного кода контроллера:
public class MainViewController implements Initializable {
@FXML // fx:id="filesTree"
private TreeView<File> filesTree;
@Override
public void initialize(URL url, ResourceBundle rb) {
File currentDir = new File("src/xslt"); // current directory
findFiles(currentDir);
}
public void findFiles(File dir) {
TreeItem<File> root = new TreeItem<>(new File("Files:"));
root.setExpanded(true);
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("directory:" + file.getCanonicalPath());
findFiles(file);
} else {
System.out.println(" file:" + file.getCanonicalPath());
root.getChildren().add(new TreeItem<>(file));
}
root.getChildren().add(new TreeItem<>(file));
}
filesTree.setRoot(root);
} catch (IOException e) {
e.printStackTrace();
}
}
}
И мой FXML
взгляд очень проста - просто AnchorPane
с TreeView
. Но я могу поделиться им, если это необходимо.
Так что вопросы - как мне сделать каталоги расширяемыми? Я нашел setExpanded(true)
метод, но это другое.
Thank s для подробного ответа и объяснения! Работает отлично! – lapadets