我一個JList
,在一些面板層次,我沒有能夠突破關鍵UP和DOWN改變選擇事件,並注意到,我沒有得到任何的按鍵事件我JList
,所以我就開始調查加上幾行我Swing
層次的重點管理:爲什麼我的JList獲得臨時焦點?
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
獲得它,所以我做了所有這些按鈕unfocusable,和然後我得到這個奇怪的結果,我的JList
正在失去焦點... null?!?!
focusGained
focusLost to null
然後我添加了被註釋掉的focusLost方法來恢復時,它會丟失重點線,但我相信它的長項非常糟糕的解決方案,所以我的問題是:
- 爲什麼我的
JList
只能得到時間焦點,如果不是這樣的話,那麼爲什麼它會被迫放棄null
? - 如何解決它在一個適當的(良好做法)的方式?
爲什麼不使用[鍵綁定(http://docs.oracle.com/javase/tutorial/uiswing/misc /keybinding.html)?這並不一定強調像'KeyListener'這樣的相關問題。這篇文章關於[Motion Using Keyboard](http://tips4java.wordpress.com/2013/06/09/motion-using-the-keyboard/),可以讓您更深入地瞭解每種方法,@camickr :-) –