我想將單元格焦點轉移到JTable中的某個特定單元格上,例如當單元格(2,3)上的焦點和按下回車鍵時,焦點應該轉移到單元格(2,5 )是跳過一個單元格(2,4)。轉移焦點在JTable中
爲此,我使用JTable類的changeSelection()方法,但它不工作。
我想將單元格焦點轉移到JTable中的某個特定單元格上,例如當單元格(2,3)上的焦點和按下回車鍵時,焦點應該轉移到單元格(2,5 )是跳過一個單元格(2,4)。轉移焦點在JTable中
爲此,我使用JTable類的changeSelection()方法,但它不工作。
也許你可以在光標移動由默認的UI實現完成的地方找到答案。 jdk1.6.0_10 \ src \ javax \ swing \ plaf \ basic \ BasicTableUI.java 我認爲這是您正在尋找的主角選擇索引。
是否應該只從精確細胞(2,3)或第3列的所有細胞轉移焦點?無論如何,這裏有一個似乎可以滿足你要求的例子。雖然提防,這個例子拿上TableCellEditor的以下假設:
TableCellEditor的可能不會失敗當問一個值不在表(如果TableModel的是在安裝過程中爲空)
table.setSurrendersFocusOnKeystroke(true);
table.getCellEditor(2, 3).getTableCellEditorComponent(table, null, false, 2, 3).addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER && table.getSelectedRow() == 2 && table.getSelectedColumn() == 3)
{
selectCell(2, 5);
table.editCellAt(2, 5);
focusEditedCell();
e.consume();
}
}
private void selectCell(int row, int col)
{
table.setRowSelectionInterval(row, row);
table.setColumnSelectionInterval(col, col);
}
private void focusEditedCell()
{
Component c = table.getEditorComponent();
if (c != null)
{
c.requestFocusInWindow();
}
}
});