JList
一部のパネル階層で、キーUPとイベントを介して選択を変更できDOWNず、キーイベントを取得できないことに気付いたので、これらの行を追加して階層JList
のフォーカス管理を調査し始めましたSwing
:
mJList.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
System.out.println("focusLost to "+e.getOppositeComponent());
//mJList.requestFocus();
}
@Override
public void focusGained(FocusEvent e) {
System.out.println("focusGained");
}
});
最初に、いくつかのボタンがフォーカスを獲得してから数ミリ秒後にフォーカスを獲得していることに気づいたJList
ので、それらすべてのボタンをフォーカス不可にすると、この奇妙な結果が得られます。JList
フォーカスが失われます... null ?!? !
focusGained
focusLost to null
次に、フォーカスが失われるたびにフォーカスを取り戻すために focusLost メソッドでコメントアウトされている行を追加しましたが、長期的には非常に悪い解決策だと思うので、私の質問は次のとおりです。
- なぜ私は
JList
一時的な焦点しか得られなかったのですか?そうでない場合、なぜそれをあきらめざるを得ないのnull
ですか? - 適切な(グッドプラクティス)方法で修正するにはどうすればよいですか?