我在框架上为JTable添加了一个密钥列表。 现在关注我有代码
if (ke.getKeyCode()==10)
{
int rowIndex = jTable2.getSelectedRow();
int colIndex = jTable2.getSelectedColumn();
jTable2.editCellAt(rowIndex, colIndex);
ke.consume();
这会编辑单元格但光标不会显示,直到我用鼠标点击它
答案 0 :(得分:4)
不要使用KeyListener!
Swing旨在使用Key Bindings(参见How to Use Key Bindings上的Swing教程)。那就是你将Action绑定到KeyStroke。
默认情况下:
Enter
键会将单元格选择移动到下一行F2
键会将单元格置于编辑模式因此,您希望将Enter键的默认Action替换为F2键的Action。这可以通过使用键绑定轻松完成:
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));
另外,请查看Key Bindings以获取所有Swing组件的默认绑定列表。
答案 1 :(得分:0)
尝试为F2 keyPressed添加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);
}
我希望这项工作。