Добавление изображения или значка в "JTable"

Класс JTable предоставляет метод для вставки значков или изображений. JTable необходимо указать тип объектов, хранящихся в столбце таблицы, чтобы можно было выбрать подходящую визуализацию. Это делается путем вызова метода getColumnClass(...):

public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
Java определяет, указан ли рендерер JTable или нет, в противном случае JTable вызывает шаблон и вызывает getColumnClass()  который извлекает тип ячейки в первой строке. Затем он сравнивает его со списком типов данных, в которых сохранены воспроизведения. Этот список инициируется JTable, но его можно добавлять или редактировать. Рендеринг включает в себя ImageIcon и Icon.

В следующем примере показано, как добавить изображения в столбец:

import javax.swing.*; 
импорт javax.swing.table.*;

public class Table_image extends JFrame
{
public Table_image()
{
ImageIcon icon1 = new ImageIcon("1.png");
ImageIcon icon2 = new ImageIcon("2.png");
ImageIcon icon3 = new ImageIcon("3.png");
ImageIcon icon4 = new ImageIcon("4.png");

string[] title = {"Операционная система", "Популярность"};
Object[][] data =
{
{icon1, "Android: 76.6%"},
{icon2, "IOS: 19.7%"},
{icon3, "Windows Phone: 2.8%"},
{icon4, "BlackBerry OS: 1%"},
};

шаблон DefaultTableModel = new DefaultTableModel(data, Title);
JTable table = new JTable( template )
{
/*автоматическое определение типов данных
*всех столбцов
*/
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
};
//изменить высоту строки
table.setRowHeight(100);
JScrollPane scrollPane = новый JScrollPane( таблица);
getContentPane().add( scrollPane );
}

public static void main(String[] args)
{
Table_image frame = new Table_image();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
Результат после выполнения:

Добавить иконку добавления изображения в jtable

Если вы не реализуете getColumnClass, столбец будет содержать текст(имя файла), а не изображения. Например, вместо вставки логотипа Android JTable отобразит "1.png".

Если вы используете свой собственный шаблон, который наследует from  AbstractTableModel, не забудьте реализовать getColumnClass в модели class.

class Model extends AbstractTableModel{
private Object[][] data;
приватный заголовок String[];

public Model(Object[][] data, String[] title){
this.data = data;
this.title = заголовок;
}

public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}

public int getColumnCount() {
return this.title.length;
}

public int getRowCount() {
return this.data.length;
}

public Object getValueAt(int row, int col) {
return this.data[row][col];
}
}
Подробнее о редакторах и рендерерах читайте на официальном сайте java: Editors and Renderers.