[英]How to add image to JTable cell?
我有一个在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;
}
}
据说,它从我指示的文件夹中抓取图像,但是它只是在该列中输出文本,而不是实际图像。 如何获得显示正确图像的信息? 谢谢。
您应该重新实现TableCellRenderer
尝试阅读此简短文章
ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource(“ res / img / active.png”));; ImageIcon inactiveStatus =新的ImageIcon(CleanSheets.class.getResource(“ res / img / inactive.png”));;
Icon/ImageIcon
作为局部变量,因为Renderer
在每个Mouse or Key events
上都会重新创建这些Objects
,因此在疯狂时期会有很多事件 this.fireTableDataChanged();
是添加/删除整个JTable
内容的正确通知者,对于TableCell,有fireTableCellXxx()
在这种情况下,(仅向TableModel
添加一行)关于fireTableRowsInserted()
如何获得显示正确图像的信息?
如我所见,您在其中添加了新行,然后将Icon / ImageIcon
直接添加到TableModel
,不再进行转换,无需声明,没有问题,JTable已在API中实现了Icon / ImageIcon
如果没有从Mouse or Key events
更改Icon / ImageIcon
请不要使用Renderer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.