在JAVA中动态更改标签框中字符的颜色

时间:2017-09-28 20:48:15

标签: java html swing

我正在使用Swing Jframe表单在java中创建一个打字测试游戏。

在程序中,我正在比较textfield(输入)和labelbox(预定义样本)的字符。如果两个字符相同,则该字符的颜色应在标签框中变为绿色,否则为红色。

例如:标签框中的示例文本:这是示例

如果在文本框中输入的第一个字符为T,则标签框中的“T”应变为绿色,否则为红色。

我尝试使用label.setForeground()选项,它会将整个文本转换为特定颜色。

我尝试使用label.setText(String.format("<html> text1 <font color='red'> text2 </font></html>"));选项,它只会将代码之间的文字转换为相应的颜色。

请指导我,如果有我应该知道的html功能或我应该用来实现此任务的java功能。提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

该字符的颜色应在标签框中变为绿色,否则为红色。

不要使用JLabel(和HTML)。

而是使用JTextPane。您可以轻松更改单个字符的属性。

让您入门的简单示例:

JTextPane textPane = new JTextPane();
textPane.setText( "Hello" );

//  Define some character attributes

SimpleAttributeSet green = new SimpleAttributeSet();
StyleConstants.setForeground(green, Color.GREEN);

//  Change attributes on some existing text

StyledDocument doc = textPane.getStyledDocument();
doc.setCharacterAttributes(0, 1, green, false);