Добавление изображения в JTable Cell

Я хочу динамически добавлять данные в JTable, включая изображение. Вот мой код:

Основной класс

        String image = matchedSlots.get(i).getImagePath();
        String title = matchedSlots.get(i).getTitle();
        String director = matchedSlots.get(i).getDirector();
        int rating = matchedSlots.get(i).getRating();
        int runTime = matchedSlots.get(i).getRunningTime();
        searchResults.getColumnModel().getColumn(i).setCellRenderer(new ImageRender(image));

        DefaultTableModel tm = (DefaultTableModel) searchResults.getModel();    
        tm.addRow(new Object[] {image,title,director,rating,runTime});

Класс ImageRenderer

public class ImageRender extends DefaultTableCellRenderer{

   ImageIcon icon = null;

   public ImageRender(String iconName)
   {
      icon = new ImageIcon(getClass().getResource(iconName));
   }  
}

Это не работает. На экране отображается только имя пути. Как я могу это исправить


person batsta13    schedule 30.05.2013    source источник
comment
Пожалуйста, прочтите о средствах визуализации ячеек в руководстве по JTable: docs.oracle. com/javase/tutorial/uiswing/components/   -  person Hauke Ingmar Schmidt    schedule 31.05.2013


Ответы (1)


Самый простой способ — изменить TableModel, чтобы он возвращал тип Icon.class для столбца изображения.

DefaultTableModel model = new DefaultTableModel(...) { 
    public Class getColumnClass(int column) {
        Class clazz = String.class;
        switch (column) {
            case IMAGE_COLUMN:
                clazz = Icon.class;
                break;
        }
        return clazz;
    }
};
person MadProgrammer    schedule 30.05.2013