是否可以更改文本字段中文本的顏色?我正在嘗試構建解釋器,所以我想知道如何更改文本的真實顏色時間。 比如我在文本字段中輸入單詞是:在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