java - 按 Enter 键编辑 JTable 中的特定单元格并显示光标

标签 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();

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

最佳答案

不要使用 KeyListener!

Swing 被设计为使用键绑定(bind)(请参阅 How to Use Key Bindings 上的 Swing 教程)。也就是说,您将 Action 绑定(bind)到 KeyStroke。

默认情况下:

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

因此您想将 Enter 键的默认操作替换为 F2 键的操作。通过使用键绑定(bind)可以轻松完成此操作:

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

关于java - 按 Enter 键编辑 JTable 中的特定单元格并显示光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326822/

相关文章:

java - if-continue 与嵌套 if

java - 如何计算文件中的行值?

java - 自定义 JTextfield - 仅限整数且有限制

java - 如何在 SwingX 中使用 MultiSplitLayout?

java - 如何在发生更改时将扩展 AbstractTableModel 的类保存到文件中?

java - JTable 在更新时突出显示特定表

java - 类结束括号前的换行符

java - 尝试创建一个删除按钮以从列表中删除项目

java - SwingX JX表 : use ColorHighlighter to color rows based on a "row object"

java - 第二次调用类程序中断,Java