Reputation: 15
I trying to add image using ImageIcon
class to jTable
cell , but i get in the cell sun.awt.image.ToolkitImage@196a4632
where it supposed to display image in the cell
the code i tried :
JTable jTable;
String[] columns={"Page No","Chapter","Image"};
Object[][] rows={{1,4,null},{2,7,null}}}
public Tab_ImgIcn(){
ImageIcon icon=new ImageIcon(getClass().getResource("exit.png"));
jTable= new JTable(rows, columns);
jTable.setValueAt(icon.getImage(), 0,3);
JScrollPane jps = new JScrollPane(jTable);
frame.add(jps);
}
Upvotes: 1
Views: 6527
Reputation: 209002
You need to override getColumnClass()
on the table model, and return ImageIcon.class
for the column with the ImageIcon
. If you don't, the renderer will show the toString()
, as the default column class type will be Object
. See How to use Tables: Editors and Renderers.
For example
ImageIcon icon=new ImageIcon(getClass().getResource("exit.png"));
String[] columns={"Page No","Chapter","Image"};
Object[][] rows={{1,4,icon},{2,7,icon}};
DefaultTableModel model = new DefaultTableModel(rows, columns) {
@Override
public Class<?> getColumnClass(int column) {
switch(column) {
case 0:
case 1: return Integer.class;
case 2: return ImageIcon.class;
default: return Object.class;
}
}
};
JTable table = new JTable(model);
Upvotes: 9