する質問をすることでしか得られない、回答やアドバイスがある。11Swingの勉強をしていてprocessKeyEventとaddkeylistenerを簡単にですが試してみました。使ってみた感想としてprocessKeyEventの方がenableEventsで簡単にキーイベントを受け付ける用に出来て楽に感じました。addkeylistenerの方はインターフェースの継承の関係で使わないイベントであってもメソッドを書かなければならず若干ソースが多くなってしまい今のところaddkeylistenerのメリットがわかりません。便利なメソッドには何か落とし穴がある事が多い気がします。この二つのメソッドの違いについてご教授いただければ幸いです。回答ありがとうございます。回答に書かれてる事を理解するために入力したキーを真ん中のJLabelに表示するソースを書いて順番に実行してみました。1.まず1の番号が付いたメソッドを試し、キーリスナーをJFrameに加えた後コンパイルして実行。結果JFrameにフォーカスが当たらないのか中央の文字が変更されない。2.次に左側のJbuttonにキーリスナーを追加して試してみる。左側のJButtonをクリックしてフォーカスが当たってる状態のみ文字が変わった。先ほどと同じ結果これらを踏まえてprocessKeyEventとaddkeylistenerを比較してみるとprocessKeyEventの場合キー入力を受け付ける部品を作るときenableEventsのアクセス修飾子の問題で部品を継承したクラスを作らなければならないのが大変に感じました。addkeylistenerの場合キー入力を受け付けたいコンポーネントにそのメソッドを書くだけで良く、キーリスナーも使い回しが効くので便利に感じました。回答者様の伝えたいこととズレてる気がしますが確かにaddkeylistenerのメリットを体感する事が出来たと思います。}}attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー0汎用性という意味からいえばaddKeyListenerを用いるのが普通です。JFrameで全てのキーイベントをハンドリングするような単純なゲーム画面のようなものだと確かにprocessKeyEventをオーバーライドするのは便利に感じると思います。JTextFieldなどのキーイベントにより制御されるような部品を使い始めるともはやJFrame#processKeyEventには(そのままでは)キーイベントが配送されなくなります。これは本来キー入力はフォーカスがあるコンポーネントへイベント配送されるメカニズムになっているためです。processKeyEventを単純にオーバーライドしただけではフォーカスに対応した処理方式とはいえないのですね。addKeyListnerを用いてキーイベントハンドラーを登録するやりかたは(適切にフォーカス制御をするという条件の下では)ハンドラーが行うべき仕事が単純になります。それはフォーカスの状態によって今現在どのコンポーネントがキーイベントを受け取るべきかをswingの実装が面倒を見てくれ、KeyListenerの実装側は「今自分がキーイベントを受け取れる状態にある」という前提でキーの処理だけに集中できるからです。addKeyListenerを使わずにprocessKeyEventをオーバーライドしてしまうと、フォーカスがあるコンポーネントに正しくイベントハンドリングを行わせるための配慮を自前でやらなければならず却って面倒なことになります。addKeyListenerを用いた場合、複数のハンドラーメソッドをオーバーライドしなくてはならず面倒なのはおっしゃるとおりですが、そのために便利なクラスKeyAdapterがあります。このクラスはKeyListenerの全てのメソッドが「何もしない」ようにオーバーライドされているクラスでして、それを用いて興味があるイベントのメソッドのみオーバーライドするような使い方をします。他のメソッドを一々オーバーライドする必要がない});このようなクラスは他にもあり、ComponentAdapterとかWindowAdapterなど、複数のハンドラーを持つXxxLisenterの実装の際に重宝します。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。15:36回答欄に書くにはちょっと窮屈なので質問の追記に回答者様への返答を書きます。回答欄に書くにはちょっと窮屈なので質問の追記に回答者様への返答を書きます。追記された内容を拝見しました。質問者さんが述べておられる、「継承」による実装と別クラスのリスナーへイベントハンドリングを「移譲」する方式にも使い勝手の差があるという点、同感です。画面上にコンポーネントが増えてくるとこの違いが顕著になるように思います。追記された内容を拝見しました。質問者さんが述べておられる、「継承」による実装と別クラスのリスナーへイベントハンドリングを「移譲」する方式にも使い勝手の差があるという点、同感です。画面上にコンポーネントが増えてくるとこの違いが顕著になるように思います。頂いたご意見への回答は行っておりません。