簡體   English   中英

在JTable中選擇記錄時,Netbeans F2擊鍵不起作用

[英]Netbeans F2 Keystroke Not Functioning When Selecting A Record In JTable

我有此應用程序可以編輯員工的記錄,並且可以執行此操作,用戶可以單擊該特定記錄並按“編輯”按鈕,或者用戶可以按我創建的鍵盤(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是應用程序上的“創建動作”。

或者用戶只需按我創建的鍵盤F2中的快捷鍵即可。

您有幾個問題:

  1. 您的代碼使用F1作為KeyStroke,而不是F2。
  2. 您正在使用按鈕的InputMap / ActionMap,而不是表格。 您應該為表而不是按鈕進行鍵綁定。
  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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM