Java - 如何检查 JTextField 是否为空

34

我知道这是一个常见的问题并且已经找到了解决方案。但是当我尝试时它没有正常工作。

我的JTextField是空的,按钮也没有启用。当我在文本字段中写入内容时,按钮不会变为启用状态。

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

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

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

4
顺便说一下,我会使用 loginbt.setEnabled(name.getText().length()!=0); - johnchen902
@johnchen902 loginbt.setEnabled(name.getText().isEmpty()); - undefined
13个回答

0
你可以使用 loginbt = new JButton("登录"); loginbt.addActionListener(new loginHandler()); add(loginbt);
if(String.valueOf(name.getText()).isEmpty() {
    loginbt.setEnabled(false);
}else {
    loginbt.setEnabled(true);
}

`


1
你的回答并没有为现有的回答增添太多内容。在这里不需要使用String.valueOf,因为getText已经返回了一个String对象。 - undefined

-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) {
        }

    });

1
-1 DocumentListener是首选方法。很少有理由使用KeyListener。这是在使用AWT时的旧设计。此外,当生成keyPressed事件时,因为尚未向文档添加任何文本,所以代码无法正常工作,因此长度仍将为0,当第一个事件被触发时。 - camickr
1
谢谢您的纠正,我将来会注意DocumentListener。 - Nikos

-1
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");
    }
}

嗨@HarinduLakshan,请考虑添加更多信息以提高答案的质量。 - Tiago Martins Peres
这个答案存在多个问题。它没有清晰地回答问题,变量名不符合Java规范,并且使用hashCode()而不是isEmpty()来检查缺失值。它还包含不必要的注释。 - Greg Brown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接