【问题标题】:Introduce Delay after keyReleased() eventkeyReleased() 事件后引入延迟
【发布时间】:2010-03-23 19:54:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: java swing delay


    【解决方案1】:

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

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

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

    您也可以组合这些方法。

    【讨论】:

    • 进行验证以通知用户散焦错误绝对是我的首选方式。为此 +1。
    【解决方案2】:

    编写自定义 DocumentFilter。阅读 Text Component Features 上的 Swing 教程部分了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多