Delayed text color change in Swing text field

前端 未结 3 1560
花落未央
花落未央 2020-12-21 13:24

Is it possible to change the color of a text in a text field?I am trying to build an interpreter, so I was wondering on how would you change the color of the text in real ti

相关标签:
3条回答
  • 2020-12-21 13:39

    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();
                }
            });
        }
    
    }
    
    0 讨论(0)
  • 2020-12-21 13:56

    Try this:

    HighlightPainter greenPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.GREEN);
    
    //in a thread...    
    Highlighter h = tf.getHighlighter();
    h.addHighlight(offset, offset+length, greenPainter); 
    
    0 讨论(0)
  • 2020-12-21 13:58

    You have to use JEditorPane / JTextPane instead of JTextField and also you can draw the text/string by overriding the paintComponent method.

    0 讨论(0)
提交回复
热议问题