这是我的代码,javafx listview api中目录列表的基本树视图,根据我的需要进行了一些修改。
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();
}
我对编程很新,我无法弄清楚如何在createchildren函数中获取java.io.file数组for循环的名称。运行此代码时,它会列出树视图中每个项目的绝对路径,使其难看并且难以阅读。另一个我会使用的替代方法是如何获取我的def dir = new File(“{home_dir} / Android_Surgeon / Projects”)的名称,然后继续让子文件夹和文件具有绝对路径。第一种选择是首选。经过一周的尝试,累了,需要帮助!!!感谢...
答案 0 :(得分:0)
看起来像Javascript,而不是Java。但是如果那个File
类是Java,那么你只需要调用f.getName()
。查看您的代码,我猜您要将data
的{{1}}设置为文件名。
所以:
TreeItem
或者将TreeItem {
data: f.getName();
createChildren: createChildren;
isLeaf: isLeaf;
}
设置为实现data
的{{1}}对象的某个包装器以仅返回名称。