JList中单行中的多种字体颜色

时间:2014-07-22 09:53:33

标签: java swing fonts colors jlist

我正在创建一个应用程序,在其中我们在JList中显示几百条记录。

有时,我们希望使用不同的字体颜色突出显示每个记录中的某些值。

我尝试过使用完美无缺的HTML,但如果这些记录包含任何类型的html标记,那将会出现严重错误,因为它们会被渲染。

不幸的是,您无法:

normaltext<html><font color="red">redtext</font></html>

因为看起来HTML必须在开头。

我已经尝试覆盖getListCellRendererComponent,我可以在其中创建一个JPanel,并为具有不同前景色的记录的每个部分使用JLabel,但这对于大型记录来说效率很低。

由于许可问题,我宁愿不使用任何第三方解决方案。

有没有人有这种情况的解决方案?

由于

1 个答案:

答案 0 :(得分:3)

  

我尝试过使用完美无缺的HTML,尽管这样会有用   如果这些记录中包含任何类型的HTML,那就太可怕了   标签,因为它们将被渲染。

实际上,如果文本包含html标签,您可以转义标签并将其包装在<html> escaped text of record</html>标记所需颜色的文本中

更新工作示例

public static void main(String[] args) {
    JFrame f=new JFrame();
    String text="<html>An example of tag &lt;html&gt; with <font color='red'>&lt;input&gt;</font> tag colored</html>";
    f.add(new JLabel(text));
    f.pack();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
}