2012-04-15 115 views
1

我想將加速器設置爲JMenuItem。Java - 將加速器添加到JMenuItem

現在我將它設置這樣

openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); 

,它的工作,但我不希望CTRL + O爲加速器。我想'空間'作爲加速器,但我沒有找到任何方法,我可以生成對應'空間'的KeyStroke。

KeyStroke.getStroke() 

要麼採用char或(int,int)。我也沒有發現任何與空間相對應的字符。

回答

3

..找不到與空間對應的任何字符。

KeyEvent.VK_SPACE

如果搖擺忽略它,我也不會感到驚訝,因爲' '是一個不尋常的&很難看到加速器。

+0

我說我沒有找到'char'對應的空間。 'KeyEvent.VK_SPACE'是一個int類型,沒有像KeyStroke.getStroke(int)這樣的只接受int的方法。我不得不提供一些我不想要的修飾符。 – 2012-04-15 09:10:23

+0

所以讓我弄清楚這一點。如果用戶選中某個按鈕並按下「步速」來激活它,那麼您想要調用菜單操作?讓我升級'不尋常和難看的加速器'到'不可行的GUI'。我的建議是'選擇一個可行的加速器字母'。菜單項中顯示的文字是什麼? – 2012-04-15 09:38:45

+1

+1用於思考用戶。 :-)更多[這裏](http://stackoverflow.com/a/10161155/230513)。 – trashgod 2012-04-15 10:20:31

3

大多數用戶界面代表使用類似METRICAL TETRASEME的東西渲染KeyEvent.VK_SPACE加速器:⏘(U+23D8)。例如,一個Action可能包括這些行:

static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); 
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, MASK)); 
+2

請注意,Mac OS X使用此加速器啓動[聚光燈搜索](http://en.wikipedia.org/wiki/Spotlight_%28software%29)。 – trashgod 2012-04-15 10:26:59