2017-01-24 101 views
0

在此先感謝支持... 我使用TreeView類和CheckBoxTreeItem編碼在JavaFx中。我想在樹形視圖中顯示CheckBoxTreeItem(File)只有路徑或文件的名稱,以及所有子,即用戶的選擇。所有關於選擇路徑的東西,flush trow都可以正常工作,但是當我在樹形視圖上上傳時,對象顯示文件的完整路徑而不是名稱。我只想顯示名字。javafx CheckBoxTreeItem <File> TreeView <File>。如何僅顯示文件的名稱而不顯示完整路徑?

enter image description here 要做到這一點,我使用擴展CheckBoxTreeItem類:

public class FilePathTreeItem_analisi extends CheckBoxTreeItem<File> 

我的問題是這樣的:當我加入這個到TreeView這樣:

TreeView<File> treview_Base; 
treview_Base.setCellFactory(CheckBoxTreeCell.<File>forTreeView()); 
FilePathTreeItem_analisi Ckaggiunto = new FilePathTreeItem_analisi(file.toPath()); 

..和其他命令,即正確的上傳文件

爲什麼它顯示完整的路徑,而不僅僅是名稱?

這是類CheckBoxTreeItem的:

public class FilePathTreeItem_analisi extends CheckBoxTreeItem<File> 
public FilePathTreeItem_analisi(Path file){ 
super(file.toFile()); 
dilavoro =file; 

this.fullPath=file.toString(); 
this.setIndependent(false); 

//test if this is a directory and set the icon 
if(Files.isDirectory(file)){ 
    this.isDirectory=true; 
    this.setGraphic(new ImageView(folderCollapseImage)); 
}else{ 
    this.isDirectory=false; 
    this.setGraphic(new ImageView(fileImage)); 
} 

this.setValue(file.toFile()); 

......以及一些listyener和事件處理程序...

所以我的問題是:什麼我在擴展CheckBoxTreeItem到類使用在TreeView中顯示文件的名稱而不是整個路徑?使用替代

回答

0

StringConverter<File> converter = new StringConverter<File>() { 

    @Override 
    public String toString(File file) { 
     return file.getName(); 
    } 

    @Override 
    public File fromString(String string) { 
     // not used by CheckBoxTreeCell: 
     return null ; 
    } 
}; 

treview_Base.setCellFactory(tv -> { 
    CheckBoxTreeCell<File> cell = new CheckBoxTreeCell<>(); 
    cell.setConverter(converter); 
    return cell ; 
}); 

treview_Base.setCellFactory(CheckBoxTreeCell.<File>forTreeView()); 
相關問題