更改抽象字符串中的文本颜色()

时间:2012-12-10 13:22:23

标签: java swing awt java-2d styledtext

我正在尝试使用swing来强调字符串中的一个作品。

我被建议使用带有以下代码的HTML:

Graphics2D g2 = (Graphics2D) g;
g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);

我试过这个但没有运气......它只是输出HTML

有人能指出我正确的方向吗?

6 个答案:

答案 0 :(得分:10)

  • 如何编译:{{1​​}} as'“'是一个特殊字符,我们必须使用 \

  • 来逃避它
  • 您投放到Graphics2D但不使用它(与问题无关但可能导致异常)。

应该是:

g.drawString("this is something I want people to <p color="#00FF00">NOTICE</p>", x, y);

添加颜色只需在Graphics2D g2 = (Graphics2D) g; g2.drawString("this is something I want people to <p color=\"#00FF00\">NOTICE</p>", x, y); 对象上调用setColor(Color c)

Graphic

但是,这会将整个String设置为绿色,如果您只想将部分绘制为绿色,请使用JLabel获取HTML支持(最多为HTML3.2):

g2.setColor(Color.GREEN);

完整示例:

enter image description here

NB 正如您所看到的那样,因为段落标签而不是使用 font 标签来获取它单行如此:

enter image description here

JLabel label = new JLabel("<html>this is something I want people to <p color=\"#00FF00\">NOTICE</p></html>");

答案 1 :(得分:3)

如果你只是创建一个强调单词的简单标签,你可以直接将HTML直接分配到JLabel上......

JLabel label = new JLabel("<html>this is something I want people to <p color='#00FF00'>NOTICE</p>");

只要在<html>的字符串开头有JLabel部分,它就会使用HTML渲染器绘制它。

正如@AndrewThompson指出的那样,<p>会强制彩色文字到新的一行,所以也许<span>会更合适......

JLabel label = new JLabel("<html>this is something I want people to <span style='color:#00FF00;'>NOTICE</span>");

答案 2 :(得分:3)

使用Graphics.setColor()更改您所做的任何事情的颜色。或者使用JLabel设置颜色。

答案 3 :(得分:3)

对样式文字使用JLabel。请参阅LabelRenderTest了解如何将其绘制到图像和图像中。用于油漆。

使用Graphics / AWT方法

字符串暗示NOTICE应为绿色,但其余为默认值(黑色)。我们需要用字符串的两个部分的颜色调用drawString(String)两次,将后一个字符串偏移第一个字符串的宽度。要获得宽度,请参阅FontMetricsGlyphVector等内容。 This answer使用GlyphVector来获取字母大纲。

答案 4 :(得分:1)

你可以在g.drawString()之前使用g.setColor(Color.BLUE)。 (例如Color.BLUE)

答案 5 :(得分:-2)

你可以添加g.setColor(Color.Chosen Color);然后用g.drawString()写出字符串 也许