テキストフィールドのテキストの色を変更することはできますか?インタープリタを作成しようとしていますので、実際のテキストの色をどのように変更するのでしょうか時間。 例えば、私がテキストフィールドに入力した単語がある:スウィングテキストフィールドのテキストの色の変更を遅らせる
printf("hi");
単語printf
は、数秒後にグリーンになります。
それは可能ですか?
テキストフィールドのテキストの色を変更することはできますか?インタープリタを作成しようとしていますので、実際のテキストの色をどのように変更するのでしょうか時間。 例えば、私がテキストフィールドに入力した単語がある:スウィングテキストフィールドのテキストの色の変更を遅らせる
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();
}
});
}
}
JTextFieldの代わりにJEditorPane/JTextPaneを使用する必要があります。また、paintComponentメソッドをオーバーライドしてテキスト/文字列を描画することもできます。
リアルタイム要素では、新しいTimerを作成し、それを一定の時間スリープ状態にする必要があります。 –
私は 'JEditorPane'または' JTextPane'の 'paintComponent()'をオーバーライドすることをお勧めします。それをもっと明確にするために編集できますか? –
これを試してみてください:
HighlightPainter greenPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
//in a thread...
Highlighter h = tf.getHighlighter();
h.addHighlight(offset, offset+length, greenPainter);
何htmlタグについては? – mishadoff