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中文网其他相关文章!