是否可以更改文本字段中文本的颜色?我正在尝试构建解释器,所以我想知道如何更改文本的真实颜色时间。 比如我在文本字段中输入单词是:在Swing文本字段中延迟文本颜色更改
printf("hi");
字printf
变成了几秒钟后绿色。
可能吗?
是否可以更改文本字段中文本的颜色?我正在尝试构建解释器,所以我想知道如何更改文本的真实颜色时间。 比如我在文本字段中输入单词是:在Swing文本字段中延迟文本颜色更改
printf("hi");
字printf
变成了几秒钟后绿色。
可能吗?
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();
}
});
}
}
您必须使用JEditorPane/JTextPane而不是JTextField,也可以通过覆盖paintComponent方法来绘制文本/字符串。
对于实时元素,您需要制作一个新的Timer,并使用它在给定的时间长度内休眠。 – 2012-03-21 11:34:38
我第一次阅读,因为你建议覆盖'JEditorPane'或'JTextPane'的'paintComponent()'。你可以编辑,使其更清楚? – 2012-03-21 12:33:20
试试这个:
HighlightPainter greenPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
//in a thread...
Highlighter h = tf.getHighlighter();
h.addHighlight(offset, offset+length, greenPainter);
什么html标签? – mishadoff 2012-03-21 11:52:48