我希望将细胞焦点转移到JTable中的特定细胞,就像聚焦细胞(2,3)和按下回车键后,焦点应该转移到跳过的细胞(2,5)一个细胞(2,4)。
为此,我使用的是JTable类的方法changeSelection(),但它无效。
答案 0 :(得分:0)
也许您可以在默认UI实现完成光标移动的位置找到答案。 jdk1.6.0_10的\ src \的javax \摇摆\ PLAF \基本\ BasicTableUI.java 我认为这是你正在寻找的领先选择指数。
答案 1 :(得分:0)
是否应仅从确切的细胞(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();
}
}
});