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);
}
}
});