Java - 检查 JTextField 是否为空

问题描述 投票:0回答:13

所以我知道这是一个热门问题并且已经找到了解决方案。但当我尝试这个时,它无法正常工作。

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

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

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

    if(name.getText().equals("")) {
        loginbt.setEnabled(false);
    }else {
        loginbt.setEnabled(true);
    }
java swing jbutton jtextfield documentlistener
13个回答
38
投票

为此,您需要为

DocumentListener
添加更改侦听器(一个
JTextField
,对文本中的更改做出反应),并且在
actionPerformed()
内,您需要根据是否将
loginButton
更新为启用/禁用
JTextfield
是否为空。

以下是我从这个线程中发现的内容。

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

  }
});

22
投票

如果 JTextField

name
不包含文本,则以下内容将返回 true:

name.getText().isEmpty();


4
投票

您需要的是一种称为文档侦听器的东西。请参阅如何编写文档侦听器


4
投票

检查 JTextFiled 是否为空:

if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0))

3
投票

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

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

必须用

javax.swing.event.ChangeListener
书写并附在字段上(请参阅此处)。字段值的更改应触发侦听器重新评估对象状态。你期待什么?


2
投票

使用以下代码:

if(name.getText().equals(""))
{
loginbt.disable();
}

2
投票

您可以根据需要使用

isEmpty()
isBlank()
方法。


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

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

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

this.name.getText().isBlank();

0
投票

试试这个

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

0
投票
if(name.getText().hashCode() != 0){
    JOptionPane.showMessageDialog(null, "not empty");
}
else{
    JOptionPane.showMessageDialog(null, "empty");
}

0
投票

尝试这个并改变布尔语句。

String text = name.getText(); 
if(!text.isEmpty()) {
    loginbt.setEnabled(true);
}else {
    loginbt.setEnabled(false);
}

按照我的行动方法,效果很好。

public void actionPerformed(ActionEvent e){
    String inputText = e.getActionCommand();
    String itext = text1.getText();
    if(inputText.equals("Submit") && !itext.isEmpty()){
        label1.setText(text1.getText());
        text1.setText("");
    }
}

0
投票

你可以使用

`loginbt = new JButton("登录"); loginbt.addActionListener(新的loginHandler()); 添加(登录);

if(String.valueOf(name.getText()).isEmpty() {
    loginbt.setEnabled(false);
}else {
    loginbt.setEnabled(true);
}

`


-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
投票
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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.