按回车键编辑 JTable 中的特定单元格并显示光标

use*_*041 0 java swing jtable keylistener tablecelleditor

我在框架上向 JTable 添加了一个 keylistner。现在在 kepressed 我有代码

            if (ke.getKeyCode()==10)
            {
              int rowIndex = jTable2.getSelectedRow();
              int colIndex = jTable2.getSelectedColumn();
              jTable2.editCellAt(rowIndex, colIndex);
              ke.consume();
Run Code Online (Sandbox Code Playgroud)

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

cam*_*ckr 5

不要使用 KeyListener!

Swing 旨在使用键绑定(请参阅有关如何使用键绑定的 Swing 教程)。也就是说,您将 Action 绑定到 KeyStroke。

默认情况下:

  1. Enter键将小区选择移动到下一行
  2. F2键会将单元格置于编辑模式

所以你想用 F2 键的 Action 替换 Enter 键的默认 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));
Run Code Online (Sandbox Code Playgroud)

此外,请查看Key Bindings以获取所有 Swing 组件的默认绑定列表。