在JTable中选择记录时,Netbeans F2键击不起作用

时间:2016-07-29 22:20:02

标签: 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是我的应用程序上的创建操作。

1 个答案:

答案 0 :(得分:1)

  

或者用户只需按下我创建的键盘中的快捷键即F2。

你有几个问题:

  1. 您的代码使用F1作为KeyStroke,而不是F2。
  2. 您正在使用按钮的InputMap / ActionMap,而不是表格。你应该为表做KeyBindings,而不是按钮。
  3. 您不应该创建两个操作。而是创建一个可以由按钮和表共享的Action。
  4. 所以基本代码是:

    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);