DefaultListModel изменить представление jList

Если у меня есть следующий сценарий

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

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

Теперь список, очевидно, будет отображать имя файла, которое я хочу. Однако, если бы я обрабатывал файлы, мне нужен был бы фактический путь. Итак, как мне добиться такого результата, когда JList отображает только имя, но в то же время модель сохраняет полный путь?

В качестве альтернативы я мог бы сделать ...(file1.getAbsolutePath()), но тогда jList не отображал бы правильные данные


person user1927602    schedule 04.04.2014    source источник


Ответы (1)


Вместо этого следует использовать DefaultListModel<File>, а затем добавить в модель файлы, а не строки имен файлов. Вы можете изменить внешний вид дисплея, предоставив JList средство визуализации ячеек, которое просто показывает имя каждого файла.

e.g.,

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);
   }
});
person Hovercraft Full Of Eels    schedule 04.04.2014