java - 在 JTable 中选择记录时 Netbeans F2 按键不起作用

标签 java swing netbeans jtable keystroke

我有一个可以编辑员工记录的应用程序,为此,用户可以单击该特定记录并按“编辑”按钮,或者用户只需按我创建的键盘中的快捷键即可F2。这是我的代码:

btn_EditEmployee.getInputMap(btn_EditEmployee.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "btn_EditEmployee");
   btn_EditEmployee.getActionMap().put("btn_EditEmployee", new AbstractAction() {
      public void actionPerformed(ActionEvent e) {
           //my code for editing an employee
   }
});

但我的问题是,如果我单击表上的记录,我创建的 F2 按键将不起作用。有人可以告诉我为什么它不起作用吗?预先感谢您的回答。

编辑:我忘了提及,当我在 JTable 上选择一条记录时,F1、F3-F12 正在使用上面的代码。唯一的问题是F2。我坚持使用 F2 作为编辑操作,因为我的 F1 是我的应用程序上的创建操作。

最佳答案

or the user can just press the shortcut key in the keyboard that I created which is the F2.

您有几个问题:

  1. 您的代码使用 F1 作为 KeyStroke,而不是 F2。
  2. 您正在使用按钮的InputMap/ActionMap,而不是表格。您应该为表格而不是按钮执行 KeyBindings。
  3. 您不应该创建两个操作。相反,您创建一个可以由按钮和表格共享的操作。

所以基本代码是:

Action action = new AbstractAction(...)
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        // add logic here
    }
};

JButton button = new JButton( action );

String key = "EditAction"
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_R, 0);
InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
im.put(ks, key);
table.getActionMap().put(key, action);

关于java - 在 JTable 中选择记录时 Netbeans F2 按键不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668272/

相关文章:

java - Java中读取和处理.mat文件(邻接矩阵)

java - 如何在浮点后保留 Double 的零

java - Selenium:是否有像 "Maven"for .net 这样的构建自动化工具,我们可以在其中定义依赖项、插件、测试套件等

Java:如何注册监听 JFrame 运动的监听器

java - 如何在 Java 中以线程安全的方式进行迭代循环

java - 清除一个 JTable 中的数据也会删除另一个 JTable

java - MigLayout 元素对齐

java - 为什么 Netbeans Maven 项目显示错误 : 'cmd' is not recognized

Java编译警告

java - Netbeans/REST 中的 POST 方法给出错误