2012-08-01 41 views
4

我正在製作一個複雜的桌面應用程序,其中包含多個用於工作流的選項卡式窗格,每個窗格都充滿了不同的按鈕,標籤和其他UI元素。他們每個人都需要定義一個助記符,並且這些通常會因爲用完字母來定義而發生衝突。Java Swing中的衝突記憶

我注意到,在Windows上,如果爲兩個控件定義了相同的助記符,那麼按它將在它們之間循環,並且在釋放該鍵時它們被激活。使用Swing時,如果您使用相同的鍵定義其中的2個,則助記符將無法激活。

是否有解決方法?

+2

不知道,也許在代碼中的概念錯誤,更好地幫助更早發佈SSCCE, – mKorbel 2012-08-01 07:54:54

+0

這聽起來像你自己沒有編碼,但讓GUI生成器爲你做。在Java語法中沒有這樣的「助記符」。 – 2012-08-01 08:03:34

+5

@MarkoTopolnik:http://docs.oracle.com/javase/6/docs/api/javax/swing/JLabel.html#setDisplayedMnemonic%28int%29; http://docs.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#setMnemonic%28char%29 – 2012-08-01 08:08:49

回答

1

我的建議是使用KeyListener,然後根據顯示的標籤區分操作。

僞代碼

public void keyPressed(KeyEvent e){ 
    //assuming 'O' activates Open button on two different tabs 
    if(key == 'O'){ 
     if(activeTab == tab1) 
      doStuff1(); 
     else if(activeTab == tab2) 
      doStuff2(); 
    } 
} 

你可以找到一種方法,使之在實際的代碼工作。