JavaFxで作ったGUIでファイルブラウザをscalaに実装したいです。したがって、私は TreeView を使用してツリーを表します。
このコードは、1 つのアイテムをクリックするたびにツリーから 1 つのレベルのみを読み取りますが (パフォーマンス上の理由)、ツリービューにはインデントが表示されず、空でないフォルダーの矢印が表示されません。
(フォルダーが空かどうかを確認するために) 2 つのレベルを読み上げると、ディレクトリのないファイルのみが表示されます。
それがどのように機能するか考えている人はいますか?
前もって感謝します!
val rootPath: String = "C:/Test/"
val path1 = Paths.get(rootPath)
val opts = util.EnumSet.of(FileVisitOption.FOLLOW_LINKS)
def treeRecursive(path: Path): Unit = {
Files.walkFileTree(path,opts, 1, new SimpleFileVisitor[Path]() {
override def visitFile(path: Path, attrs: BasicFileAttributes): FileVisitResult = {
if (attrs.isDirectory()){
val subdir = new TreeItem[String](path.toString, new ImageView(pictureFolder))
root.getChildren.add(subdir)
}
else{
val file = new TreeItem[String](path.toString, new ImageView(pictureFile))
root.getChildren.add(file)
}
FileVisitResult.CONTINUE
}
override def visitFileFailed(path: Path, exc: IOException): FileVisitResult = {
println(path + " failed")
FileVisitResult.CONTINUE;
}
} )
}
val mouseEvent: EventHandler[_ >: MouseEvent] = new EventHandler[MouseEvent] {
override def handle(event: MouseEvent): Unit = {
event.getSource match {
case clicked: TreeView[String] => treeRecursive(Paths.get(clicked.getSelectionModel.getSelectedItem.getValue))
}
}
}
ここに私の現在のツリービューからのスクリーンショットがあります! スクリーンショット
このスクリーンショットのように見えるはずです Screenshot2