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

85

如何设置标签文字的颜色?

myLabel.setText("Text Color: Red");
myLabel.???

我可以在一个标签中使用两个不同的颜色吗?

例如:

"Text Color:" 的颜色为黑色,"Red" 的颜色为红色。

7个回答

174

对于单一颜色的前景色

label.setForeground(Color.RED)

如何在同一标签中使用多个前景颜色:

(我可能会使用GridLayout等将两个标签并排放置,但先尝试以下方法...)

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

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

这将产生:

在此处输入图片描述


68

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

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

title.setForeground(Color.white);
据我所知,创建你想要的双色标签最简单的方法是创建两个标签,并确保它们按正确顺序相邻排列。

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

这应该可以工作


8
object.setForeground(Color.green);

*任何你想要的颜色 *先前声明的对象


8
没错,但与之前的答案相比没有什么新的内容 :-) - kleopatra

4
使用HTML标签作为标签的一个缺点是,当您需要编写可本地化的程序(应该在多种语言中工作)时,您将遇到仅更改可翻译文本的问题。或者您将不得不将整个HTML代码放入翻译中,这非常尴尬,我甚至会说荒谬 :)
gui_en.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组件演示,请运行位于www.jidesoft.com的WebStart演示(http://www.jidesoft.com/products/1.4/jide_demo.jnlp)。他们所有的产品都有演示...最好的部分是StyledLabel在速度方面与JLabel(带HTML和不带HTML)进行了比较! :-)

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


0
myLabel.setForeground(new java.awt.Color(255, 0, 0));

方括号中的数字描述了红、绿、蓝三种颜色值的组合,数值越高,颜色越浅,取值范围为0至255。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接