Java:将图像添加到JTable?

Java:将图像添加到JTable?,java,swing,Java,Swing,我有一个大按钮,点击时,添加一个图像到一个表 class BigButtonListener implements ActionListener{ Image screenshot=null; Browser bigbrowser =null; BigButtonListener(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTabl

我有一个大按钮,点击时,添加一个图像到一个表

    class BigButtonListener implements ActionListener{
 Image screenshot=null;
 Browser bigbrowser =null;

 BigButtonListener(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTable historyTable) {
  screenshot = browser.toImage(true);
  bigbrowser = browser;
  historyTable = historyTable;
  //table1.addRow
 }

  @Override
  public void actionPerformed(ActionEvent e) {
   // save current image
   historyModel.insertRow(0,new Object[]{new ImageIcon(screenshot)}); 
   //System.out.println(historyTable.getRowCount());

  }   
} 

然而,所有这些都添加了文本
javax.swing。ImageIcon@9dfb04
而不是实际图片。

DefaultTableCellRenderer
扩展了JLabel并通过简单的
setText(value.toString())
进行渲染

按照自定义单元渲染器和编辑器上的操作

或者使用以下简单的hack:

historyTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
    protected void setValue(Object value) {
        if( value instanceof ImageIcon ) {
            setIcon((ImageIcon)value);
            setText("");
        } else {
            setIcon(null);
            super.setValue(value);
        }
    }
});

DefaultTableCellRenderer
扩展JLabel并通过简单的
setText(value.toString())
进行渲染

按照自定义单元渲染器和编辑器上的操作

或者使用以下简单的hack:

historyTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
    protected void setValue(Object value) {
        if( value instanceof ImageIcon ) {
            setIcon((ImageIcon)value);
            setText("");
        } else {
            setIcon(null);
            super.setValue(value);
        }
    }
});