首页 >Java >java教程 >如何在不按回车的情况下立即检测JTextField值的变化?

如何在不按回车的情况下立即检测JTextField值的变化?

Linda Hamilton
Linda Hamilton原创
2024-12-24 08:07:17736浏览

How to Detect JTextField Value Changes Immediately Without Pressing Enter?

JTextField 的值更改监听器

许多开发人员都遇到过只有在用户在文本字段中按 Enter 后才会触发操作监听器的问题。为了纠正这个问题,我们需要采用一种不同的方法来立即检测值的变化。

解决方案在于使用“DocumentListener”而不是“ActionListener”。文本字段的基础文档会自动侦听其内容的任何更改。通过向此文档添加侦听器,我们可以在用户更改文本后立即执行特定操作。

这是一个包含“DocumentListener”的修改后的代码片段:

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    warn();
  }
  public void removeUpdate(DocumentEvent e) {
    warn();
  }
  public void insertUpdate(DocumentEvent e) {
    warn();
  }

  public void warn() {
     if (Integer.parseInt(textField.getText())<=0){
       JOptionPane.showMessageDialog(null,
          "Error: Please enter number bigger than 0", "Error Message",
          JOptionPane.ERROR_MESSAGE);
     }
  }
});

This一旦文本字段中的输入不再满足条件(正整数),代码就会触发错误消息。无需按 Enter 键或执行任何其他操作。

因此,我们不依赖“ActionListener”(它会监听“ActionEvents”(例如按 Enter 键)),而是利用“DocumentListener”来观察文档中的更改,允许对文本修改立即做出反应。

以上是如何在不按回车的情况下立即检测JTextField值的变化?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn