JavaFX Scala File-TreeView: считывать 2 уровня

Я хочу реализовать файловый браузер в Scala с графическим интерфейсом, созданным с помощью JavaFx. Поэтому я использую TreeView для представления дерева.

Этот код считывает только один уровень из дерева всякий раз, когда я нажимаю на один элемент (из соображений производительности), но в древовидном представлении не отображаются отступы, а стрелки в не пустых папках отсутствуют.

Если я прочитал 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

0 ответов

Другие вопросы по тегам