我在框架上向JTable添加了一个关键侦听器。
现在在按键上我有代码

            if (ke.getKeyCode()==10)
            {
              int rowIndex = jTable2.getSelectedRow();
              int colIndex = jTable2.getSelectedColumn();
              jTable2.editCellAt(rowIndex, colIndex);
              ke.consume();

这确实可以编辑单元格,但是直到我用鼠标单击它时,光标才会显示

最佳答案

不要使用KeyListener!

Swing设计为使用键绑定(请参见How to Use Key Bindings上的Swing教程)。那就是您将一个Action绑定到一个KeyStroke。

默认情况下:


Enter键会将单元格选择移至下一行
F2键会将单元格置于编辑模式


因此,您想用F2键的动作替换Enter键的默认动作。使用键绑定很容易做到这一点:

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组件的默认绑定的列表。

10-07 20:36