如何在Java中设置标签(彩色文本)的颜色?


Answers:


139

对于单色前景色

label.setForeground(Color.RED)

对于同一标签中的多个前景色:

(我可能会使用aGridLayout或某物将两个标签彼此相邻放置,但是这里...)

您可以在标签文本中使用html,如下所示:

frame.add(new JLabel("<html>Text color: <font color='red'>red</font></html>"));

产生:

在此处输入图片说明


66

您可以通过更改前景类别来设置JLabel的颜色:

JLabel title = new JLabel("I love stackoverflow!", JLabel.CENTER);

title.setForeground(Color.white);

据我所知,创建所需的双色标签的最简单方法是简单地制作两个标签,并确保它们以正确的顺序彼此相邻放置。


21
JLabel label = new JLabel ("Text Color: Red");
label.setForeground (Color.red);

这应该工作



3

使用HTML标记的缺点之一是需要编写可本地化的程序(该程序应以多种语言工作)。您将遇到仅更改可翻译文本的问题。否则您将不得不将整个HTML代码放入您的翻译中,这很尴尬,我什至会说荒谬:)

gui_zh.properties:

title.text=<html>Text color: <font color='red'>red</font></html>

gui_fr.properties:

title.text=<html>Couleur du texte: <font color='red'>rouge</font></html>

gui_ru.properties:

title.text=<html>Цвет текста: <font color='red'>красная</font></html>

2

只是想补充上面提到的@aioobe ...

通过这种方法,您可以使用HTML对文本进行颜色编码。尽管这是对标签文本进行颜色编码的最常用方法之一,但并不是最有效的方法....考虑到每个标签都会导致对HTML进行解析,渲染等事实。具有要显示的大型UI表单,每毫秒都可以提供良好的用户体验。

您可能想要浏览以下内容并尝试一下。

Jide OSS位于 https://jide-oss.dev.java.net/)是一个专业的开源库,其中包含大量可供使用的Swing组件。他们有一个名为StyledLabel的JLabel改进版本。该组件可以完美解决您的问题...查看其开源许可是否适用于您的产品。

该组件非常易于使用。如果要查看其Swing组件的演示,可以运行其WebStart演示,该演示位于www.jidesoft.comhttp://www.jidesoft.com/products/1.4/jide_demo.jnlp)。他们所有的产品都是经过演示的……最好的部分是,在速度方面,StyledLabel与JLabel(无HTML)进行了比较!:-)

可以在(http://img267.imageshack.us/img267/9113/styledlabelperformance.png)上查看性能测试的屏幕截图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.