2012-04-15 10 views
1

アクセラレータをJMenuItemに設定したいと思います。Java - アクセラレータをJMenuItemに追加

は、今のところ私はこの

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

のようにそれを設定していますし、それが働いていますが、私はアクセラレータとしてO + Ctrlキーを望んでいません。アクセラレータとして「スペース」が必要ですが、「スペース」に対応するKeyStrokeを生成する方法はありませんでした。

KeyStroke.getStroke() 

は、charまたは(int、int)のいずれかをとります。私はスペースに対応するチャーも見つけられませんでした。

答えて

3

..スペースに対応する任意の文字も見つかりません。 ' '以来

KeyEvent.VK_SPACE

スイングがそれを無視した場合、私は驚かないだろう

は、珍しい&見えにくいアクセラレータです。

+0

は私がchar'が空間に対応する '見つけることができませんでした。 'KeyEvent.VK_SPACE'はintでのみINTかかるKeyStroke.getStroke(INT)のような方法がありません。私はしたくないこれもいくつかの修飾子を供給する必要があります。 –

+0

だから私はこれをまっすぐにしましょう。ユーザーがボタンをタップして「ペース」を押してアクティブにすると、メニューアクションが呼び出されますか?アクセラレータを見るために「珍しい&難しい」GUIを「機能しないGUI」にアップグレードしてみましょう。私のアドバイスは、「実行可能なアクセラレータ文字を選択」です。メニュー項目に表示されるテキストは何ですか? –

+1

+1ユーザの考え方。 :-)詳細[ここ](http://stackoverflow.com/a/10161155/230513)。表示名は、Mac OS Xは、[Spotlight検索](http://en.wikipedia.org/wikiを開始するには、このアクセラレータを使用すること_Space_空ではありません:-) – trashgod

3

ほとんどのUI代理人は、METRICAL TETRASEME:⏘(U+23D8)のようなものを使用してKeyEvent.VK_SPACEアクセラレータをレンダリングします。例えば、Actionは、これらの行が含まれます:

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

です。注: – trashgod

関連する問題