2011-10-01 77 views
3

我曾嘗試使用下面的設置JMenuItem的加速器:如何在Swing中使用帶有加號或減號的菜單加速器?

item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 

菜單項顯示快捷方式⌘+(在Mac),但打這兩個鍵不會觸發它。我遇到了與減號-相同的問題。

是否有任何方法可以將這些標誌中的任何一個作爲快捷菜單項?

編輯 - 這是一個SSCCE:

public class MenuWithPlus { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 

     JMenuBar bar = new JMenuBar(); 
     JMenu menu = new JMenu("View"); 
     JMenuItem item = new JMenuItem("Zoom in"); 
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 
     item.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println("ZOOM IN TRIGGERED"); 
      } 
     }); 
     menu.add(item); 
     bar.add(menu); 
     frame.setJMenuBar(bar); 

     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
+0

你有代碼(例如[SSCCE](http://pscode.org/sscce.html))供我們玩嗎? –

+0

workforme - 在德國的鍵盤佈局和加號/減號外的數字塊的Windows vista – kleopatra

+0

你使用主鍵盤上的'+'/'-'鍵與數字鍵盤?他們被視爲單獨的密鑰,所以請確保您始終如一地使用它們。 –

回答

1

您使用的是+/- 主鍵盤與數字鍵盤上的鍵?他們被視爲單獨的密鑰,所以請確保您始終如一地使用它們。

認爲VK_PLUS不用於通常的加號鍵( - =美式鍵盤上),而無論是數字鍵盤+,或者在一些德國鍵盤上的+關鍵。假設你有美式鍵盤,你可能需要Shift以及VK_EQUALS

請參閱this old bugthis discussion

+0

我的夢想(但似乎越來越不可能)是用戶可以用主鍵盤觸發它,但這會導致問題,因爲每個鍵盤都有它自己的+和 - 鍵佈局(例如在我的法語鍵盤上, - 鍵會觸發VK_EQUALS事件,等號(帶有移位的正數)會觸發VK_SLASH事件...)。你認爲這有一個通用的解決方法嗎? – krookedking

2

在加速器代碼必須修改到:

item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, Event.CTRL_MASK)); 

一個測試,我做了補充框架上的一個關鍵事件監聽器,趕上去鍵值爲正(在這種情況下ADD)。

frame.addKeyListener(new KeyAdapter() { 
    @Override 
    public void keyPressed(KeyEvent e) { 
     System.out.println(e.getKeyCode()); 
    } 
    }); 
+0

當我聽到按鍵事件時,我得到了一個VK_SLASH事件my =(和shift +)鍵...這可能是因爲我的法語鍵盤。你認爲這有一個通用的解決方法嗎? – krookedking

+0

通過下面的代碼,您可以獲得鍵盤佈局,然後創建一個方法來映射您需要的密鑰。 InputContext.getInstance()的getLocale() –

相關問題