タイトルはそれをかなり要約しています。プログラムでキーボードを使うのは初めてですが、何が違うのか、どれが使いやすいのかなどを知りたいです。
1 に答える
KeyListener
コンポーネントが重要なイベントに関心を登録できるようにするために、AWT と Swing によって使用される元のメカニズムです。これは、キー イベント (モディファイアなど) に関するかなりの情報を提供する低レベル API です。
重要なイベントを監視するこの方法は、多くの理由から、ほとんどの状況ではお勧めできません。1 つ目は、コンポーネントが (この API を介して) キー イベントを受信するには、コンポーネントがフォーカス可能であり、現在のキーボード フォーカスを持っている必要があるという事実です。これは、質問の 99% がKeyListeners
関連するトラップです。
2 つ目は、コードの外観に関するもので、伝統的に、さまざまなキー ストロークとそれらの潜在的な修飾子を考慮しKeyListener
て、長いステートメントを使用する必要があり、時間の経過とともに煩雑になる可能性があります。同じ批判も平準化される可能性があります。if-else
ActionListener
Key Bindings は、非常に具体的なキー イベントを監視するために使用できる新しい API (およびより大きな入力バインディング API の一部) です。これには、個々のキー ストロークと修飾子が含まれます。
キー バインディングはアクションAPI も使用します。つまりAction
、毎回ロジックを再実装する必要なく、プログラムのさまざまな部分で を再利用できます。
キー バインドの代わりに、キー リスナーを使用します。キー リスナーは、キーボード入力への低レベル インターフェイスとしての役割を果たしますが、個々のキーに応答するには、キー バインディングの方が適切であり、コードの保守が容易になる傾向があります。コンポーネントにフォーカスがないときにキーバインディングがアクティブになる場合、キーリスナーも困難です。キー バインドの利点のいくつかは、ある程度自己文書化されていること、包含階層を考慮していること、再利用可能なコードのチャンク (Action オブジェクト) を奨励していること、およびアクションを簡単に削除、カスタマイズ、または共有できることです。また、アクションがバインドされているキーを簡単に変更できます。