Swing文本字段中的延迟文本颜色更改

是否可以更改文本字段中文本的颜色?我正在尝试构建一个解释器,所以我想知道如何实时更改文本的颜色。 例如,我在文本字段中输入的单词是:

printf("hi"); 

几秒后, printf一词变为绿色。

可能吗?

BlinkColorTextField

 package test; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.Timer; public class BlinkColorTextField { BlinkColorTextField() { final JTextField blinkingText = new JTextField("Red & Blue"); ActionListener blinker = new ActionListener() { boolean isRed = true; public void actionPerformed(ActionEvent ae) { if (isRed) { blinkingText.setForeground(Color.BLUE); } else { blinkingText.setForeground(Color.RED); } isRed = !isRed; } }; Timer timer = new Timer(1000, blinker); timer.start(); JOptionPane.showMessageDialog(null, blinkingText); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run() { new BlinkColorTextField(); } }); } } 

尝试这个:

 HighlightPainter greenPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN); //in a thread... Highlighter h = tf.getHighlighter(); h.addHighlight(offset, offset+length, greenPainter); 

您必须使用JEdi​​torPane / JTextPane而不是JTextField,并且还可以通过覆盖paintComponent方法来绘制文本/字符串。