關閉我的頭頂,我認爲我們有在脊髓癆InputMap
& ActionMap
定製keystroke
實現克服了這個。
我們使用的實現使我們能夠進行「連續」的編輯,也就是,當用戶按下Enter或Tab鍵,我們移動到下一個編輯單元格並開始編輯
InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap am = table.getActionMap();
KeyStroke tabKey = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
Action moveNextCellAction = am.get(im.get(tabKey));
ContinousEditAction continousEditAction = new ContinousEditAction(table, moveNextCellAction);
im.put(tabKey, "Action.tab");
am.put("Action.tab", continousEditAction);
的ContinousEditAction
負責找到下一個可編輯的單元格。基本上當動作被解僱,你把當前單元格的股票通過JTable.getEditingRow
& JTable.getEditingColumn
方法(你還需要檢查該表是通過JTable.isEditing
編輯模式,否則,你需要使用JTable.getSelectedRow
& JTable.getSelectedColumn
- 其實你也許可以僥倖逃脫這樣做,但這是我如何處理這個問題)。
從那裏,你想走過的單元格,直到你找到一個可編輯的單元格。
基本上,您希望檢查當前行的末尾,然後移動到下一個行,直到沒有更多行存在爲止,具體取決於您想要執行的操作,可以選擇循環回到表的起始位置(單元格0x0)並行走,直到達到當前位置。
要小心,如果您不小心,最終可能會持續循環:P。
如果你沒有找到任何可編輯的細胞,你可能只是想選擇使用JTable.setRowSelectionInterval
& JTable.setRowSelectionInterval
下一個可用的電池,其他明智的您可以撥打JTable.editCellAt(nextRow, nextCol)
但是,這一切都歸結爲它是什麼,你要實現。
此外,您還可以使用同樣的想法回車鍵;)
+1用於構建您的問題:-)雖然我不太明白它:您的意思是_focus_下一個單元格是什麼意思?接下來開始編輯?類似於_focus丟失_ - 從哪個組件? _on每個Tab按下Jtable重新加載本身_不,這不是默認行爲。最好編寫一個證明你的問題的SSCCE,那麼簡單的語言誤解就不會成爲解決方案:-) – kleopatra 2012-07-26 10:04:02