0

如果我有以下情况

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

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

现在列表显然会显示我想要的文件名。但是,如果我要处理文件,我将需要实际路径。JList那么,在仅显示名称但同时模型存储完整路径的情况下,我将如何实现此结果?

或者我可以完成,...(file1.getAbsolutePath())但 jList 不会显示正确的数据

4

1 回答 1

3

您应该改为使用 aDefaultListModel<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);
   }
});
于 2014-04-04T00:27:02.873 回答