У меня проблема со вставкой изображений в JTable. Я искал и нашел, что есть 2 способа. Вы можете либо переопределить getcolumnclass табличной модели, либо создать свой собственный tablecellrender.
Я решил создать свой собственный рендерер ячеек с этим кодом:
public class MyRenderer extends DefaultTableCellRenderer {
/*
* @see TableCellRenderer#getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
ImageIcon icon = new ImageIcon("Images/green.png");
setText((String)value);
setIcon(icon);
return this;
}
}
В методе, где я заполняю поля моей таблицы, я добавляю изображения с этой строкой ..
laneTable.getColumnModel().getColumn(4).setCellRenderer(new MyRenderer());
Проблема в том, что изображения отображаются в виде пустого белого пространства. Это определенно что-то рендеринг, потому что при выборе строки все поля подсвечиваются синим цветом, кроме 4-го столбца (поле с изображениями) все еще белого цвета. Я не могу на всю жизнь понять, почему изображения не показываются. Я отрегулировал высоту строки различными способами, чтобы увидеть, было ли изображение там, но вне поля зрения или что-то в этом роде. Кажется, это не так.
Я также пытался сделать метод переопределения, но, полагаю, я не правильно сделал синтаксис, потому что netbeans давал синтаксические ошибки, и я пока не нашел достойного примера того, как это сделать.
Спасибо.
edit: я пробовал более простой способ, переопределив класс, используя приведенный ниже код, но ячейки все еще пустые. И я протестировал вставку изображений в метки, и они работают, поэтому путь правильный.
@Override
public Class getColumnClass(int column)
{
if (column == 4)
{
return ImageIcon.class;
}
return Object.class;
// other code; default to Object.class
}