我在将图像插入 JTable 时遇到问题。我搜索并发现有两种方法。您可以覆盖 tablemodel 的 getcolumnclass 或创建自定义 tablecellrender。
我选择使用以下代码制作自己的单元格渲染器:
public class MyRenderer extends DefaultTableCellRenderer {
/*
* @see TableCellRenderer#getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
ImageIcon icon = new ImageIcon("Images/green.png");
setText((String)value);
setIcon(icon);
return this;
}
}
在我填写表格字段的方法中,我用这一行添加图像..
laneTable.getColumnModel().getColumn(4).setCellRenderer(new MyRenderer());
问题是图像显示为空白区域。它肯定会渲染一些东西,因为当您选择行时,所有字段都突出显示蓝色,除了第 4 列(带有图像的列)仍然是白色的。我一生都无法弄清楚为什么图像没有显示。我已经以各种方式调整了行高,以查看图像是否存在,但不在视线范围内。似乎并非如此。
我也尝试执行覆盖方法,但我想我没有正确执行语法,因为 netbeans 给出了语法错误,而且我还没有找到一个关于如何做到这一点的体面示例。
谢谢。
编辑:我尝试了更简单的方法,使用下面的代码覆盖类,但单元格仍然是空白的。而且我已经测试了将图像插入标签并且这些工作,所以路径是正确的。
@Override
public Class getColumnClass(int column)
{
if (column == 4)
{
return ImageIcon.class;
}
return Object.class;
// other code; default to Object.class
}