我做了一个JTextField,我希望它的背景是红色的,当它没有字符时,并且一旦写入一个字符就会自动变为绿色。
我试过这段代码
textField1.setBackground(textField1.getText().equalsIgnoreCase("") ? Color.RED : Color.GREEN);
但它不会自动更新它。
感谢
答案 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();
}
}
在JtextField中插入文本之前
在JTextField中插入Text后