3

所以,我正在使用 swing,我需要找到一个干净的(非 CPU 占用方式)来在文本字段上引入延迟。基本上,用户将在此字段中输入一个数字,keyReleased() 事件会检查输入是否适合一些参数,然后将值分配给程序中的数据存储元素。如果数据无效,则会显示一条消息。由于每次输入字母时都会调用该例程(除非输入速度非常快),因此输入过程变得非常烦人(因为通常一两个字符的数据不适合允许的参数)。

我已经尝试为它设置一个计时器对象和一个计时器任务,但是它似乎不能很好地工作(因为它延迟了程序正在运行的线程)。仅等到数据达到一定长度的选项也是不可能的,因为(如前所述)输入的长度可能会有所不同。

有人有什么想法吗?谢谢!

4

2 回答 2

4

我经常做这样的事情,我有两个建议。

处理这个问题的标准方法是使用 InputVerifier 类。然而,这仅在输入组件失去焦点时起作用 - 它旨在防止用户在输入字段无效时导航出输入字段,但直到那时它才会检查。

我这样做的另一种方法是检查每次击键的有效性,而不是在无效时显示消息。取而代之的是使用颜色来表示有效性 - 例如,在无效时将其涂成红色,在有效时将其涂成黑色。这不像消息那样具有侵入性。您可以使用工具提示来提供更详细的反馈。

您也可以组合这些方法。

于 2010-03-23T20:02:51.970 回答
3

编写自定义 DocumentFilter。阅读 Swing 教程中有关文本组件功能的部分以获取更多信息。

于 2010-03-23T20:06:53.553 回答