我想将单元格焦点转移到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();
}
}
});