2014-04-04 63 views
0

如果我有以下情形DefaultListModel修改的jList視圖

DefaultListModel model = new DefaultListModel(); 
model.addElement(file1.getName); 
model.addElement(file2.getName); 
... 

//Add to list 
myJList.setModel(model); 

現在名單顯然會顯示文件名這是我想要的。但是,如果我要處理文件,那麼我需要實際的路徑。那麼,如何在JList只顯示名稱但是模型存儲完整路徑的同時實現這一結果?

或者我可以做的,但...(file1.getAbsolutePath())隨後的jList不會顯示正確的數據

回答

3

你應該使用一個DefaultListModel<File>然後添加文件的模式,而不是文件名的字符串。您可以通過給JList一個單元格渲染器來改變顯示器的外觀,該渲染器只顯示每個文件的名稱。

例如,

fileList.setCellRenderer(new DefaultListCellRenderer(){ 
    @Override 
    public Component getListCellRendererComponent(JList<?> list, 
     Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     if (value != null) { 
     value = ((File)value).getName(); 
     } 
     return super.getListCellRendererComponent(list, value, index, isSelected, 
      cellHasFocus); 
    } 
});