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 中怎么限制只能输入数字