Java - 是否可以将图像和String放在同一个JTable单元中?

时间:2013-03-04 18:52:31

标签: java swing jtable tablecellrenderer

我知道如何将String放入JTable单元格,我知道如何将图像放入JTable单元格。但是可以将图像和字符串放入SAME JTable单元格中吗?

原因是我的JTable中有一个'status'列,目前包含绿色,琥珀色或红色图像。并且为了满足设计要求,我需要在每个图像旁边添加一些解释性文本(因此绿色图像旁边的文本将是“在线”,琥珀色图像旁边的文本将是“未知”,文本接下来红色图像将是“离线”)。我需要在一个列中执行此操作(或者看起来/行为类似于单个列),而不是两列。

我研究了这个,但没有找到任何信息。

1 个答案:

答案 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());