无法使用ImageIcon将图像添加到jTable单元格

Mo3*_*o35 1 java swing jtable imageicon

我试图使用ImageIcon类添加图像到jTable单元格,但我进入单元格sun.awt.image.ToolkitImage@196a4632,它应该在单元格中显示我尝试的代码的图像:

     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);
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*tha 9

您需要覆盖getColumnClass()表模型,并返回ImageIcon.class带有的列ImageIcon.如果不这样做,渲染器将显示toString(),因为默认的列类类型将是Object.请参见如何使用表:编辑器和渲染器.

例如

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);
Run Code Online (Sandbox Code Playgroud)