30

所以我知道这是一个流行的问题,并且已经找到了解决方案。但是当我尝试这个时它不能正常工作。

我的 JTextField 是空的,并且该按钮未启用。当我在我的文本字段中写一些东西时,按钮没有被启用。

所以我的程序应该每秒检查一次这个字段是否为空。只要有人在文本字段中写入内容,就应该启用该按钮。^^

loginbt = new JButton("Login");
    loginbt.addActionListener(new loginHandler());
    add(loginbt);

    if(name.getText().equals("")) {
        loginbt.setEnabled(false);
    }else {
        loginbt.setEnabled(true);
    }
4

11 回答 11

37

为此,您需要为您的和 内添加更改侦听器(DocumentListener对文本更改做出反应) ,您需要根据 是否为空来将 更新为启用/禁用。JTextFieldactionPerformed()loginButtonJTextfield

下面是我从这个线程中找到的。

yourJTextField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    changed();
  }
  public void removeUpdate(DocumentEvent e) {
    changed();
  }
  public void insertUpdate(DocumentEvent e) {
    changed();
  }

  public void changed() {
     if (yourJTextField.getText().equals("")){
       loginButton.setEnabled(false);
     }
     else {
       loginButton.setEnabled(true);
    }

  }
});
于 2013-06-16T10:47:55.323 回答
21

如果 JTextField "name" 不包含文本,以下将返回 true:

name.getText().isEmpty

于 2015-02-01T08:24:47.880 回答
4

检查 JTextFiled 是否为空条件:

if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))
于 2014-03-01T20:23:03.043 回答
4

你需要的是一个叫做 Document Listener 的东西。请参阅如何编写文档侦听器

于 2013-06-16T10:48:48.190 回答
3

好吧,使按钮启用/禁用的代码:

if(name.getText().equals("")) {
    loginbt.setEnabled(false);
}else {
    loginbt.setEnabled(true);
}

必须写入javax.swing.event.ChangeListener并附加到字段中(请参见此处)。字段值的更改应触发侦听器重新评估对象状态。你期待什么?

于 2013-06-16T10:48:13.993 回答
2

使用以下代码:

if(name.getText().equals(""))
{
loginbt.disable();
}
于 2014-11-10T03:10:59.823 回答
1

您可以使用isEmpty()isBlank()有关您需要的方法。


当且仅当 length() 为 0 时返回 true。

this.name.getText().isEmpty();

如果字符串为空或仅包含空白代码点,则返回 true,否则返回 false

this.name.getText().isBlank();
于 2019-10-29T19:20:17.130 回答
0
if(name.getText().hashCode() != 0){
    JOptionPane.showMessageDialog(null, "not empty");
}
else{
    JOptionPane.showMessageDialog(null, "empty");
}
于 2015-04-09T19:42:29.723 回答
0

尝试这个

if(name.getText() != null && name.getText().equals(""))
{
        loginbt.setEnabled(false);
}
else
{
        loginbt.setEnabled(true);
}
于 2013-06-16T11:05:49.777 回答
0
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // Submit Button        

    String Fname = jTextField1.getText();
    String Lname = jTextField2.getText();
    String Desig = jTextField3.getText();
    String Nic = jTextField4.getText();
    String Phone = jTextField5.getText();
    String Add = jTextArea1.getText();
    String Dob = jTextField6.getText();
    // String Gender;
    // Image

    if (Fname.hashCode() == 0 || Lname.hashCode() == 0 || Desig.hashCode() == 0 || Nic.hashCode() == 0 || Phone.hashCode() == 0 || Add.hashCode() == 0)
    {
        JOptionPane.showMessageDialog(null, "Some fields are empty!");
    }
    else
    {
        JOptionPane.showMessageDialog(null, "OK");
    }
}
于 2019-12-21T12:17:15.427 回答
-1

尝试在您的文本字段中使用 keyListener

jTextField.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
        }

        @Override
        public void keyPressed(KeyEvent e) {
            if (text.getText().length() >= 1) {
                button.setEnabled(true);
            } else {
                button.setEnabled(false);
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }

    });
于 2013-06-16T10:58:45.883 回答