2011-11-23 32 views
6

我有一個帶有選項卡窗格和不同組件的應用程序。我已經設置了菜單項的動作以加速器:是否有一個將F6作爲默認加速器的Swing元素?

private final Action focusDefaultCommandsAction = new AbstractAction() 
{ 
    { 
     putValue(NAME, "Fokusiere Kommandoliste"); 
     putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0)); 
    } 

    @Override 
    public void actionPerformed(final ActionEvent e) 
    { 
     invokeShowCommandsList(); 
    } 
}; 

我知道有一個標籤,其中Accelearator爲F6鍵不起作用。 F7鍵工作。

在Swing元素上可能有一個默認加速器比我的加速器優先嗎?

回答

9

您可以在BasicLookAndFeel.java(或類似的類,取決於您使用的L & F)中查找此內容,在F6上進行搜索。

JSplitPane使用F6來切換內容和分隔符之間的焦點。 要刪除它,你可以使用類似(未測試,我想刪除的實際行動是困難,因爲它可能是在父輸入地圖):

splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) 
    .put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), "none"); 
+1

奇蹟:工程:)謝謝你這麼多。 – Neifen

+0

是否有人知道在哪裏可以找到所有Swing組件使用的加速器。可能有用 –

+0

請注意,JSplitPane也使用F8加速器。 –

相關問題