質問: いつもお世話になっております。 いろいろググったりしてみたのですが、 上手い実現方法が思いつかないので、質問させてください。 アプレットのどの地点にフォーカスがいる場合でも、 KeyPrressedイベントを取得したいのですが、 アプレット(this)にキーリスナーを登録しても、 キーイベントが取得できません。 取得できない理由は、アプレットに配置している、 パネルやテキストボックス、ボタン等がフォーカスを、 得ているためのようです。 つまり、 もしアプレット全体でキーイベントを取得したいのであれば、 アプレットに配置していて、もっとも前面にあるオブジェクト全てにキーリスナーを登録してやらなければならないということなのでしょうか? こういったアプレット全体でキーイベントを取得するという需要は、結構あると思うのですが、その場合、どのような実現方法がベターなのでしょうか。 VBではフォームのキーイベントを取得した場合、 フォーム上に配置したテキストボックス等でも、 フォームのキーイベントが取得できると思います。 (取得順等はありますが) これを、アプレットで実現する場合、 どういったやり方が一般的なのでしょうか。 #今は、フォーカスを受け取るであろうパネルにリスナーを登録し、そのパネルがクリックされた時点でrequestFocusでフォーカスをセットし、キーイベントが受け取れるようにしています。
回答: イベントオブジェクトを作って、アプレットのdispatchEventへ投げるとか。