キー リスナーを使用する任意のクラスに実装するメソッドには、keyPressed、keyReleased、keyDown などがありますが、キーが押されている間、継続的に何かが発生するようにするにはどうすればよいでしょうか? 「keyHeld」タイプのシナリオを実装する方法はありますか?
3 に答える
KeyListener を使用しないでください。Swing はKey Bindingで使用するように設計されています。
このタイプの状況では、リピート率を完全に制御できるようになったため、スイング タイマーを使用しました。keyPressed バインディングでタイマーを開始し、keyReleased バインディングでタイマーを停止します。Swing チュートリアルには、タイマーの使用方法に関するセクションもあります。
2 つの一般的なメカニズムがあります。
keyPressed
キーが押されている間、キーが離されるまで繰り返し呼び出されます。ただし、通常、最初にキーを押してからリピート キーを押すまでの間に短い遅延があります。
または、キーが押されたことを示すフラグを設定し、キーが離されたときにフラグをリセットすることもできます。
List
おそらくこれに対する最も簡単な解決策は、現在押されている仮想キーコードであるある種のコンテンツを使用することです。次に、このリストをチェックして、作業に必要な仮想キー コードが含まれているかどうかを確認し、含まれている場合は適切なアクションを実行するだけです。
これにより、イベントディスパッチスレッド以外のスレッドからUIコンポーネントを操作したり変更したりしないでくださいという警告が表示されます
このkeyTyped
メソッドは、キーが押されている間、最初の遅延で継続的に呼び出されます。
s.....ssssssssssssssssssssssssss