2010-12-23 68 views
1

这里是我的代码,javafx listview api中目录列表的基本树形视图,为我的需要修改了一下。如何在java.io.file.listFiles上获取名称?

def home_dir = System.getProperty("user.home"); 
    def dir = new File("{home_dir}/Android_Surgeon/Projects"); 

var projectTree = TreeView { 

     root: TreeItem { 
     data: dir 
     expanded:false 
     isLeaf: isLeaf 
     createChildren: createChildren; 
    } 
    showRoot: false 

}

function createChildren(item:TreeItemBase):TreeItemBase[] { 
var file = item.data as File; 
if (file.isDirectory()) { 
    return for (f in file.listFiles()) { 
     TreeItem { 
      data: f 
      createChildren: createChildren; 
      isLeaf: isLeaf; 
     } 
    } 

} 
return []; 

}

function isLeaf(item:TreeItemBase):Boolean { 
def file = item.data as File; 
return file.isFile(); 

}

我是相当新的编程,我无法弄清楚如何获取Java的名字。在createchildren函数中用于循环的io.file数组。当这段代码运行时,它列出了treeview中每个项目的绝对路径,使其难以阅读。另一个我会用的方法是如何获得我的def dir = new File(“{home_dir}/Android_Surgeon/Projects”)的名称,然后继续并让子文件夹和文件具有绝对路径。第一个选项是首选。经过一个星期的尝试,我自己,累了,需要帮助!谢谢...

+0

你用java标记了它! – 2010-12-23 06:26:05

回答

0

看起来像Javascript,而不是Java。但是如果这个类是Java的,那么你只需要调用f.getName()。看着你的代码,我猜你希望将TreeItemdata设置为文件名。

所以:

TreeItem { 
    data: f.getName(); 
    createChildren: createChildren; 
    isLeaf: isLeaf; 
} 

要么,或设置data一些包装为File对象,实现toString只返回名称。

+0

这是当我运行f.getName()绑定异常时得到的结果: java.lang.ClassCastException:java.lang.String不能转换为java.io.File at openproject.Main.isLeaf(Main.fx :63) – drew408 2010-12-24 02:25:19