Java - 检查 JTextField 是不是为空

Posted

技术标签:

【中文标题】Java - 检查 JTextField 是不是为空【英文标题】:Java - Check if JTextField is empty or notJava - 检查 JTextField 是否为空 【发布时间】:2013-06-12 12:25:13 【问题描述】:

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

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

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

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

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

【问题讨论】:

顺便说一句,我会用loginbt.setEnabled(name.getText().length()!=0); 【参考方案1】:

为此,您需要为您的JTextField 添加更改侦听器(一个DocumentListener,它对文本中的更改做出反应),在actionPerformed() 内,您需要将loginButton 更新为启用/禁用,具体取决于JTextfield 是否为空。

以下是我从这个thread 中找到的。

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

  
);

【讨论】:

我想问一下如果按钮依赖于多个文本字段,程序是否会改变。我会使用相同的逻辑来定义操作,还是有其他方法可以使用更少的代码?感谢您的宝贵时间! 然后创建一个DocumentListener 实现来处理该按钮并将它们作为侦听器添加到所有文本框? 是的..谢谢..忘记了基本的东西:how to write document listener【参考方案2】:

如果 JTextField“名称”不包含文本,则以下将返回 true:

name.getText().isEmpty

【讨论】:

【参考方案3】:

你需要的是一个叫做 Document Listener 的东西。见How to Write a Document Listener。

【讨论】:

【参考方案4】:

检查 JTextFiled 是否为空条件:

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

【讨论】:

不错。我喜欢这个。【参考方案5】:

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

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

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

【讨论】:

【参考方案6】:

使用以下代码:

if(name.getText().equals(""))

loginbt.disable();

【讨论】:

【参考方案7】:

您可以根据需要使用isEmpty()isBlank() 方法。


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

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

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

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

【讨论】:

【参考方案8】:

试试这个

if(name.getText() != null && name.getText().equals(""))

        loginbt.setEnabled(false);

else

        loginbt.setEnabled(true);

【讨论】:

【参考方案9】:
if(name.getText().hashCode() != 0)
    JOptionPane.showMessageDialog(null, "not empty");

else
    JOptionPane.showMessageDialog(null, "empty");

【讨论】:

冷,请解释一下为什么您认为这是一个解决方案?【参考方案10】:
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,请考虑添加更多信息以提高答案的质量。【参考方案11】:

在您的文本字段中尝试使用 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 DocumentListener 是首选方法。很少有理由使用 KeyListener。这是使用 AWT 时的旧设计。此外,代码无论如何都不会工作,因为在生成 keyPressed 事件时没有向 Document 添加任何文本,所以当第一个事件被触发时长度仍然为 0。 感谢指正,以后会看到DocumentListener

以上是关于Java - 检查 JTextField 是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

通过 JTextField 循环到 getText 并检查是不是为空

JAVA中如何判断JTextField的一些问题?求高手解答……谢谢

使用 DocumentListener 实现检查 JTextField

java.swing JtextField 中怎么限制只能输入数字

java:判断在JTextField中输入的是不是是7位数字

Java 摇摆 |最后一个 JTextField 未设置为自定义大小