2012-05-23 63 views
2

我有一個多標籤框架,我必須在不同標籤下設置某些按鈕的快捷方式,但它們必須使用相同的密鑰。 例如:設置不同標籤下按鈕的相同快捷鍵

在TAB1,我有一個「做」按鈕,這應該反應F1鍵, 但如果我是切換到TAB2,我應該有一個「做這個」按鈕 即應也會對F1按鈕做出反應,但是tab1上的操作不應該被觸發。

我曾嘗試將keylistener添加到選項卡/鍵盤/面板,但仍然如果我按F1鍵,這是第一個被觸發的動作。

但我認爲原因是,我用一個開關,控制的關鍵事件,如case KeyEvent.VK_F1:mybutton1.doclick();

那麼,如何單獨行動不同選項卡下分別會有什麼反應?有沒有辦法讓焦點標籤爲例或其他?

問候。

編輯:爲Swing採取行動的一些代碼:

private class SwingAction extends AbstractAction { 
    public SwingAction() { 
     putValue(NAME, "mybutton"); 
     putValue(SHORT_DESCRIPTION, "Some short description"); 
    } 
    public void actionPerformed(ActionEvent e) { 
     mybutton.getInputMap().put(KeyStroke.getKeyStroke("F1"),"pressed"); 
     mybutton.getActionMap().put("pressed",mybutton.doClick()); 

    } 
} 

我得到:

在類型ActionMap中放(對象,操作)的方法並不適用 的參數(字符串,無效) 錯誤,(對不起,這裏一個Java/Swing的新手)

回答

4

使用

+0

嘗試過的歡呼'\t \t \t mybutton.getInputMap()。put(KeyStroke.getKeyStroke(「F1」),「pressed」); \t \t \t mybutton.getActionMap()。put(「pressed」,mybutton.doClick());'無法得到它的工作..:/ – Sin5k4

+0

沒有發佈沒有發佈[SSCCE](http://sscce.org/),爲我工作,[休息在這裏描述](http://stackoverflow.com/a/ 10674489/714968),您的[SSCCE可以基於](http:// stackoverflow。com/a/10591773/714968),@航空全鰻魚,皮特感謝你在這裏的兩個偉大的帖子:-) – mKorbel

+0

關於[JButton和KeyBindings]的優秀描述問題(http://stackoverflow.com/a/10712202/714968) )通過@trashgod – mKorbel

3

KeyStroke綁定到按鈕的doClick()具有視覺和聽覺反饋的優勢;但是,如您所見,doClick()不是Action。相反,創建一個Action,調用給定按鈕的方法doClick(),並將其綁定到所需的KeyStroke,如example所示。