如果你真的想這樣,你需要更改表格動作地圖的默認行爲。
ActionMap am = table.getActionMap();
am.put("selectPreviousColumnCell", new PreviousFocusHandler());
am.put("selectNextColumnCell", new NextFocusHandler());
然後,你需要一對夫婦的行動來處理遍歷
public class PreviousFocusHandler extends AbstractAction {
public void actionPerformed(ActionEvent evt) {
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.focusPreviousComponent();
}
}
public class NextFocusHandler extends AbstractAction {
public void actionPerformed(ActionEvent evt) {
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.focusNextComponent();
}
}
另一種方法是禁用底層Action
...
ActionMap am = table.getActionMap();
am.get("selectPreviousColumnCell").setEnabled(false);
am.get("selectNextColumnCell").setEnabled(false);
(沒有測試)
這種方法的好處是可以啓用/禁用的行爲,因爲你需要它而無需維護舊Actions
,我們談論的焦點1)內部的JTable中間人從JTable中移動焦點到電池2)(例如)的JTextField反之亦然 – mKorbel
@mKorbel:#2,JTable中的默認行爲正在改變聚焦到下一個單元,我想迫使它將焦點移動到下一個組件(例如'JTextField')按下TAB鍵。 – RYN