Java—是否可以将图像和字符串放在同一个JTable单元格中?

Java—是否可以将图像和字符串放在同一个JTable单元格中?,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我知道如何将字符串放入JTable单元格,我知道如何将图像放入JTable单元格。但是,是否可以将图像和字符串放入同一个JTable单元格中 原因是我的JTable中有一个“status”列,目前它包含绿色、琥珀色或红色图像。为了满足设计要求,我需要在每个图像旁边添加一些解释性文本(因此绿色图像旁边的文本将是“在线”,琥珀色图像旁边的文本将是“未知”,红色图像旁边的文本将是“离线”)。我需要在单个列(或看起来/行为类似于单个列的列)中执行此操作,而不是在两个列中 我对此进行了研究,但没有发现任何

我知道如何将字符串放入JTable单元格,我知道如何将图像放入JTable单元格。但是,是否可以将图像和字符串放入同一个JTable单元格中

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

我对此进行了研究,但没有发现任何信息。

是的

您需要使用自定义单元渲染器。查看更多详细信息

实际上,您有两个选择,您可以简单地设置图标和单元格文本,也可以使用渲染器工具提示文本来代替

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

您需要使用自定义单元渲染器。查看更多详细信息

实际上,您有两个选择,您可以简单地设置图标和单元格文本,也可以使用渲染器工具提示文本来代替

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());
看问题看问题