Java Swingでキーストロークをキャプチャする方法については多くのトピックがありますが、ベストプラクティスについてお聞きしたいと思います。例えば、私はどちらかのキーストロークを聞きしたいウィンドウ持っF1
またはCommand-P
Mac上で(またはCTRL-P
PC上の)。
読むのKeyEventの公式Javadocを、使用するより良い練習だと思われKey Typed
たイベントではなく、Key Pressed
またはKey Released
、彼らはより高いレベルであるため、イベントを。これは私には理にかなっています。プログラムがプラットフォームに依存しないことを確認するには、次のようにキーストロークオブジェクトを指定する必要があることもわかりました。
private KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
これによりCommand
、MacのCTRL
アクセラレータキーとPCのアクセラレータキーのいずれかをキャプチャできるようになります。(これらの用語を正しく使用していることを願っています。)オブジェクトができたのでKeyStroke
、KeyEvent
オブジェクトを自分のオブジェクトと照合するにはどうすればよいKeyListener
ですか?また、F1
重要なイベントのチェックをスローすることも、問題をさらに複雑にするだけですが、それほど多くはないことを願っています。
提案?
KeyStrokeオブジェクトができたので、KeyListenerのKeyEventオブジェクトと照合するにはどうすればよいですか?
KeyListenerは使用しません。Swingは、で使用するように設計されていますKey Bindings
。
各Swingコンポーネントのデフォルトのバインディングをリストするプログラムを含むKeyBindingsをチェックしてください。また、独自のを作成する方法の例も示しますey Bindings
。また、プロセス全体をより詳細に説明する、キーバインディングに関するSwingチュートリアルへのリンクも含まれています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加