【问题标题】:Input-validation based on entire content of JTextField, not just the last typed character基于 JTextField 的全部内容的输入验证,而不仅仅是最后输入的字符
【发布时间】:2010-09-08 10:06:20
【问题描述】:

有没有一种方法可以在您输入时根据您在该字段中输入的内容来验证 JTextField 中的文本?我应该创建某种 keyEventListener,还是有办法覆盖 insertString 方法让它这样做。我更喜欢后者,但它只能让您控制输入的最后一个字符,而不是文本字段中已经存在的整个文本字符串。我希望它在尝试输入多个小数点时发出哔声,而不是将第二个小数点添加到文本字段中。

感谢您的帮助, 埃里克

【问题讨论】:

标签: java user-interface validation jtextfield


【解决方案1】:

添加监听器有什么问题?这就是他们的目的。

您可能还想看看 JFormattedTextField。

【讨论】:

  • 并不是我反对听众,但insertString方法似乎很方便检测任何错误输入。如果我使用像 documentListener 这样的侦听器,它不会先将文本放入 textField,然后检测到那里有错误的内容,然后重新格式化文本并发出哔哔声吗?这感觉像是一个额外的步骤,但它可能是我。
  • 很可能,是的。也许 JFormattedTextField 处理这个不同。另一种可能性是不删除第二个小数点,而是在文本字段周围画一个红色边框,写一条消息或禁用 OK 按钮(或等效按钮),只要输入无效。如果什么都没发生,我会感到困惑。这可能意味着我没有用力按键盘上的键或其他什么。
  • 我猜你是对的。即使我确实发出哔哔声,人们可能听不到这个,所以这是我可以考虑的事情。我查看了 JFormattedTextField ,它似乎做了您所描述的事情:验证并可选地使用一些代码将焦点保持在该字段上。我仍然很好奇,尽管在文本字段中显示内容之前,是否没有某种方法可以仅基于最后一个字符进行验证,但我想侦听器对于简单的用户输入来说已经足够快了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多