2009-12-09 90 views
0
about = new JMenuItem("About"); 
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask())))); 
JMenu help = new JMenu("Help"); 
help.add(about); 

我想知道爲什麼我的加速器不工作。我使用JavaSe-1.6 VM在雪豹中運行。如果我拉下菜單然後嘗試按鍵順序,它們就會起作用。謝謝Java JMenuItem Accelator Snow Leopard

回答

0

第2行對我來說看起來像一個錯誤。

它不應該是這樣的

getKeyStroke(KeyEvent.VK_A, Toolkit...getMenuShortcutMask()) 

即getKeyStroke有2個參數,用逗號分隔。

順便說一下,使用Toolkit...getMenuShortcutMask來獲得操作系統相關鍵是一個非常聰明的想法。我從來沒有想過這樣做。

0

哦,我想我明白了真正的問題:

加速器只有當他們看到工作 - 它們允許你通過做一些字符在菜單項「神奇」在菜單中移動。

我認爲你要找的是助記符。那些會在按下相關按鍵時從任何地方觸發菜單項。

常見的助記符的Alt-F4殺程序(這是Cmd的-Q你),按Ctrl-S保存,按Ctrl-C複製等

0

對不起,第二行是不正確的。我一定是不小心補充了K :-)我之前使用的是助記符,但它也必須將菜單拉下才能運行。我只想要一個鍵盤快捷鍵。我切換到使用加速器,因爲那是什麼OSX java doc suggests