多个字符串以不同的方式着色到JTable的同一个单元格中

时间:2009-05-13 14:25:11

标签: java swing colors jtable

假设您有一个JTable,并且每个单元格要显示三个不同颜色的字符串,例如value1(红色),value2(蓝色),value3(绿色)。

我覆盖了getTableCellRendererComponent的{​​{1}},但DefaultTableCellRenderer方法为单元格中显示的所有字符串提供了唯一的颜色。

setForeground(Color)

2 个答案:

答案 0 :(得分:3)

JIDE提供了一个StyledLabel作为其开源公共层的一部分,这正是您想要的,比您自己实现任何内容要容易10倍。

https://jide-oss.dev.java.net/

alt text

答案 1 :(得分:2)

单元格表的默认渲染器是JLabel。该组件支持HTML标记。您可以使用的最简单的解决方案是使用HTML来呈现具有不同颜色的字符串。所以你可以构建一个String,如:

 <html><font color="blue">A String</font><font color="red">Another String</font></html>

并将其设置为单元格,您不必担心渲染器。

Most swing components allow you to use HTML, this is not only limited to tables.

另一种可能性是你创建一个从JComponent扩展的类,并编写paintComponent()程序,以便它以不同的颜色绘制这三个字符串。然后,您可以将此组件设置为渲染器。但这更复杂。因为渲染器的工作方式类似于“标记”,所以在绘制单元格时会标记正确的颜色。例如,如果您需要在单元格上绘制极其复杂的自定义图形,这将非常有用。

如果您没有大量的细胞,我会坚持使用HTML。