2012-09-25 31 views
4

所以,我有一個KeyListener添加到我的JFrame中,並將一個線程添加到我的JFrame中添加到我的JPanel中。問題是線程重繪速度比keylistener的通知慢...是否有一種方法,我可以限制keylistener每秒4鍵(或其他)。Java限制KeyListener更新

+0

'KeyListener'取決於操作系統,所以我的第一個想法是否定的,可能不是... – MadProgrammer

+0

你能否澄清*線程重繪少於keylistener *部分的更新。不是每次你調用'repaint'都會觸發'repaint'。它只會安排一個,但Swing可能會決定將多個重新調用組合在一起。如果你想做動畫,請查看[Swing tag wiki](http://stackoverflow.com/tags/swing/info)上的鏈接 – Robin

+0

線程重繪然後睡250ms,但我不知道是否可以將keylistener與這個線程。 –

回答

4

您可以在KeyListener中使用Timer,或者只是記錄上次按鍵的時間,並將其與當前時間進行比較。

這允許您在達到任何邏輯之前從KeyListener提前退出。但是,您不能阻止KeyListener被觸發,除非您經常移除並在250毫秒後重新添加。

另請注意,在Swing中,您通常會使用key bindings而不是KeyListener,但它們會有完全相同的問題。

+0

謝謝,我實際上正在研究一個,但希望java真的有這個東西。似乎工作正常,沒有滯後。 –

+0

'有沒有一種方法可以將keylistener限制爲每秒4個按鍵(或其他).'這對於Swing Action(幾種方法如何停止,啓動或暫停)來說是完全的工作,Swing Timer – mKorbel