【问题标题】:Java limit KeyListener updateJava 限制 KeyListener 更新
【发布时间】:2012-09-16 14:04:37
【问题描述】:

所以,我在 JFrame 中添加了一个 KeyListener,在我的 JFrame 中添加了一个线程。问题是线程重绘比 keylistener 的通知慢...有没有办法可以将 keylistener 限制为每秒 4 个键(或其他)。

【问题讨论】:

  • KeyListener 依赖于操作系统,所以我的第一个想法是不,可能不是......
  • 您能否澄清一下线程重绘少于keylistener 的更新 部分。并非每次您拨打repaint 时都会触发repaint。它只会安排一个,但 Swing 可能会决定将多个重绘调用组合在一起。如果你想做动画,请查看Swing tag wiki上的链接
  • 线程重新绘制然后休眠 250 毫秒,但我想知道是否可以将 keylistener 与该线程同步。

标签: java swing keylistener


【解决方案1】:

您可以在KeyListener 中使用Timer,或者简单地跟踪最后一次按下某个键的时间并将其与当前时间进行比较。

这允许您在达到任何逻辑之前提前退出KeyListener。但是,您无法阻止 KeyListener 被触发,除非您不断删除它并在 250 毫秒后再次添加它。

另请注意,在 Swing 中,您通常会使用 key bindings 而不是 KeyListener,尽管它们会遇到完全相同的问题。

【讨论】:

  • 谢谢,我实际上正在研究一个,但希望 java 确实有这方面的东西。似乎工作正常,没有延迟。
  • is there a way I can limit the keylistener to 4 keys per second(Or whatever). 这正是 Swing Action 的工作(一些如何停止、启动或暂停的方法),使用 Swing Timer
猜你喜欢
  • 1970-01-01
  • 2017-05-03
  • 2012-08-10
  • 2013-08-31
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多