2012-03-24 3 views
0

私のプログラムでは、私のキャンバスにkeyListenerを設定しています。それは素晴らしいですが、私が行うときThread.sleep(1000)keyListenerはまだ聞いて、キーを読むが、スリープ時間が終了したときにのみ結果が表示されます。 keyListenerをスリープ期間に入力されたキーを読み書きしないようにするには?Javaのキーレスターを無効にする

+0

'canvas'は 'java.awt.Canvas'を意味しますか?具体的にして、J2SEクラス名の大文字と小文字を正しく入力してください。また、より良い助けのためには、すぐに[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

4

スイングでThread.sleep()をしないでください。質問から、私はあなたがEDT(Event Dispatch Thread)ですべてをやっていることを控除します。したがって、EDTをスリープ状態にすると、Swingがディセーブルにならず、これらのイベントが一時停止されます。

キーイベントの受信を停止する必要がある場合は、setEnabled(false)でコンポーネントを無効にしてから、タイマーを開始してください。タイマーを開始すると、setEnabled(true)が呼び出されます。

+0

私はすでに前にキャンバスでsetEnabled(false)をやってみましたが、後にsetEnabled(true)を実行しましたが、keylistenerはまだキーを読み込みます。 –

+0

コンポーネントがマウスイベントをブロックするのを無効にしますか?私は 'ActionListener'を放つのをブロックしていることを知っています。' MouseMotionListener'には何の影響も与えません(リスナーはまだイベントを発生させます)が、 'MouseListener'についてはわかりません。 –

+0

@ YanIvanEvdokimovカスタムKeyListenerがありますか?私が知る限り、CanvasにはKeyListenerはありません。だから、ちょっと物事を無視するためにあなたのKeyListenerを更新することはできませんか? –

関連する問題