Java 按enter键编辑JTable中的特定单元格并显示光标
我已经在JTable on frame中添加了一个keylistner。 现在我有密码了Java 按enter键编辑JTable中的特定单元格并显示光标,java,swing,jtable,keylistener,tablecelleditor,Java,Swing,Jtable,Keylistener,Tablecelleditor,我已经在JTable on frame中添加了一个keylistner。 现在我有密码了 if (ke.getKeyCode()==10) { int rowIndex = jTable2.getSelectedRow(); int colIndex = jTable2.getSelectedColumn(); jTable2.editCellAt(rowIndex
if (ke.getKeyCode()==10)
{
int rowIndex = jTable2.getSelectedRow();
int colIndex = jTable2.getSelectedColumn();
jTable2.editCellAt(rowIndex, colIndex);
ke.consume();
这会编辑单元格,但直到我用鼠标单击它时才会显示光标。不要使用KeyListener Swing设计为使用键绑定(请参阅上的Swing教程)。也就是说,将动作绑定到击键 默认情况下:
Enter
键将单元格选择移动到下一行F2
键将单元格置于编辑模式InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
KeyStroke f2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
im.put(enter, im.get(f2));
另外,请查看所有Swing组件的默认绑定列表。不要使用KeyListener Swing设计为使用键绑定(请参阅上的Swing教程)。也就是说,将动作绑定到击键 默认情况下:
Enter
键将单元格选择移动到下一行F2
键将单元格置于编辑模式InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
KeyStroke f2 = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
im.put(enter, im.get(f2));
此外,请查看所有Swing组件的默认绑定列表。尝试为F2键添加Robot:
if (ke.getKeyCode()==10)
{
int rowIndex = jTable2.getSelectedRow();
int colIndex = jTable2.getSelectedColumn();
jTable2.editCellAt(rowIndex, colIndex);
ke.consume();
Robot pressF2 = null;
try {
pressF2 = new Robot();
} catch (AWTException ex) {
System.err.println(ex.getMessage());
}
pressF2.keyPress(KeyEvent.VK_F2);
}
我希望这能起作用。尝试为F2键添加机器人:
if (ke.getKeyCode()==10)
{
int rowIndex = jTable2.getSelectedRow();
int colIndex = jTable2.getSelectedColumn();
jTable2.editCellAt(rowIndex, colIndex);
ke.consume();
Robot pressF2 = null;
try {
pressF2 = new Robot();
} catch (AWTException ex) {
System.err.println(ex.getMessage());
}
pressF2.keyPress(KeyEvent.VK_F2);
}
我希望这能奏效。为什么?编辑由
TabelModel#isEditable
和TableCellEditor#iscelleeditable
控制,为什么?编辑由TabelModel#isEditable
和TableCellEditor#iscelleeditable