我知道如何将String放入JTable单元格,我知道如何将图像放入JTable单元格。但是可以将图像和字符串放入SAME JTable单元格中吗?
原因是我的JTable中有一个'status'列,目前包含绿色,琥珀色或红色图像。并且为了满足设计要求,我需要在每个图像旁边添加一些解释性文本(因此绿色图像旁边的文本将是“在线”,琥珀色图像旁边的文本将是“未知”,文本接下来红色图像将是“离线”)。我需要在一个列中执行此操作(或者看起来/行为类似于单个列),而不是两列。
我研究了这个,但没有找到任何信息。
答案 0 :(得分:4)
是
您需要使用自定义单元格渲染器。查看How to use Tables了解详情。
您实际上有两个选择,您只需设置单元格的图标和文本,或者您可以使用渲染器工具提示文本代替......
public class IconTextCellRemderer extend DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setText(...);
setIcon(...);
setToolTipText(...);
return this;
}
}
当然,您需要将渲染器应用于列...
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(x).setCellRenderer(new IconTextCellRemderer());