Java - 检查 JTextField 是否为空

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

我的 JTextField 为空,并且该按钮未启用。当我在文本字段中写入内容时,该按钮未启用。

因此,我的程序应该每秒检查一次此字段,无论它是否为空。只要有人在文本字段中写入了内容,就应该启用该按钮。^^

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

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

答案 1

为此,您需要为 添加更改侦听器(对文本中的更改做出反应),并在 中,您需要根据 是否为空将 更新为启用/禁用。DocumentListenerJTextFieldactionPerformed()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);
    }

  }
});

答案 2

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

name.getText().isEmpty();


推荐