Итак, я пытаюсь показать весь свой диск «C: \» в TreeView с помощью JavaFX. Я сделал это рекурсивным образом, чтобы показать содержимое подкаталогов и т. Д., Но я получаю много NullPointerExceptions, и файлы, которые находятся в подкаталоге, также не будут отображаться надлежащим образом, чтобы иметь возможность расширять его, но просто как его все в одном каталоге ...Scala: show systemDrive in TreeView
val rootItem: TreeItem[String] = new TreeItem(System.getenv("SystemDrive"),new ImageView(pictureFolder))
//set a value for the picture of an folder Icon and use it for TreeItems
val pictureFolder: Image = new Image("/fhj/swengb/project/remoty/folder.png")
val pictureFile: Image = new Image("/fhj/swengb/project/remoty/file.png")
//first set the directory as string
val directory: File = new File("C:")
//use the array to store all files which are in the directory with list files
displayDirectoryContent(directory)
//iterate trough files and set them as subItems to the RootItem "C:"
def displayDirectoryContent(dir: File): Unit = {
try{
val files: Array[File] = dir.listFiles()
for(file <- files){
if(file.isFile && !file.isHidden){
val item = new TreeItem[String](file.getAbsolutePath,new ImageView(pictureFile))
rootItem.getChildren.add(item)
}
else if(file.isDirectory && !file.isHidden){
val item = new TreeItem[String](file.getAbsolutePath,new ImageView(pictureFolder))
rootItem.getChildren.add(item)
displayDirectoryContent(file)
}
}
}catch {
case e: IOException => e.printStackTrace()
case n: NullPointerException => n.printStackTrace()
}
Так кто-нибудь представление о том, как я могу решить эту проблему с NullPointerExceptions и почему файлы в подкаталогах не отображаются должным образом?
Вы всегда добавлять файлы, используя следующую строку: rootItem.getChildren.add (пункт), поэтому они всегда на том же уровне; уровень корня. Вы можете добавить еще один параметр в свою рекурсивную функцию, которая является текущим уровнем. Когда вы добавляете каталог, пропустите этот вновь созданный уровень вниз. – Carl
@ Карл хмм, это звучит правильно, но как вы имеете в виду один уровень вниз или вверх? Не можете ли вы следовать за тем, о чем вы думаете? – Bajro