我有一个在Netbeans的设计模式下创建的JTable。在我的代码中,我选择在启动时放置以下代码行:
model = new TableModel();
tbShares.setAutoCreateColumnsFromModel(false);
tbShares.setModel(model);
tbShares
是我的JTable对象。
包含我的JTable的JFrame如下所示:
第一列设置为Object
类型(另外两个是字符串),因此它可以显示图像。我有这个代码,我输入它来加载图像,但它不起作用(list.add
部分,其余部分是为了让您深入了解我的代码的结构)。这是AbstractTableModel
。
public void addRegister(String status, String name, String clients){
ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource("res/img/active.png"));
ImageIcon inactiveStatus = new ImageIcon(CleanSheets.class.getResource("res/img/inactive.png"));
list.add(new Register((status.equals("true") ? activeStatus : inactiveStatus), name, clients));
this.fireTableDataChanged();
}
class Register{
Object status;
String name;
String clients;
public Register(Object status, String name, String clients) {
this.status = status;
this.name = name;
this.clients = clients;
}
}
据说,它从我指示的文件夹中抓取图像,但它只是输出该列中的文本而不是实际图像。如何让它显示正确的图像?谢谢。
答案 0 :(得分:2)
您应该重新实施TableCellRenderer
尝试阅读this短篇文章
答案 1 :(得分:1)
ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource(“res / img / active.png”)); ImageIcon inactiveStatus = new ImageIcon(CleanSheets.class.getResource(“res / img / inactive.png”));
Icon/ImageIcon
作为本地变量,因为Renderer
在每个Objects
上重新创建这些Mouse or Key events
,在疯狂时期有一堆事件this.fireTableDataChanged();
是添加/删除整个JTable
条件的正确通知程序,对于TableCell,有fireTableCellXxx()
在此上下文中(仅向TableModel
添加一行)关于fireTableRowsInserted()
如何让它显示正确的图像?
我在那里添加了一个新行,然后直接将Icon / ImageIcon
添加到TableModel
,不再需要转换,声明必需,没有问题,JTable已实现{{1}在API中
如果Icon / ImageIcon
未更改Icon / ImageIcon