2010-12-23 44 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