自动更新JTextField的背景颜色

时间:2014-03-04 18:11:55

标签: java swing background jtextfield

我做了一个JTextField,我希望它的背景是红色的,当它没有字符时,并且一旦写入一个字符就会自动变为绿色。

我试过这段代码

textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);

但它不会自动更新它。

感谢

2 个答案:

答案 0 :(得分:2)

你应该添加documentListener

textfield.getDocument().addDocumentListener(this);

@Override
    public void insertUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);
    }

    @Override
    public void removeUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);
    }

    @Override
    public void changedUpdate(DocumentEvent e) 
    {
        textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);    
    }

还尝试设置Textfield的opaque属性。

textField1.setOpaque(True)

答案 1 :(得分:0)

 import java.awt.*;
 import javax.swing.*;
class m extends  JFrame
{
JTextField t;
public m()
{
    setVisible(true);
    setSize(1000,1000);
    setLayout(null);
    t =new JTextField();
    t.setBounds(100,100,100,100);
    add(t);
    Timer t1=new Timer(100,new ActionListener(){
    public void actionPerformed(ActionEvent e)
        {
        if(t.getText().equals(""))
        {
            t.setBackground(Color.red);
        }
        else
            { 
        t.setBackground(Color.GREEN);
        }

        }
            }
        );
        t1.start();

}

public static void main (String[] args) {
    new m();
    }
  }

enter image description here  在JtextField中插入文本之前

enter image description here 在JTextField中插入Text后