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 を搭載した Snow Leopard でこれを実行しています。メニューをプルダウンしてからキーシーケンスを試すと、機能します。ありがとう

4

3 に答える 3

0

2行目は私にはエラーのように見えます。

次のようなものではないでしょうか

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

?

つまり、getKeyStroke にはコンマで区切られた 2 つの引数があります。

Toolkit...getMenuShortcutMaskところで、OS 依存キーを取得するために使用するのは非常に賢いアイデアです。私はそれをすることを考えたことはありませんでした。

于 2009-12-09T19:41:00.887 に答える
0

ああ、私は本当の問題を理解していると思います:

アクセラレータは、表示されている場合にのみ機能します。メニュー項目の文字を「魔法」にすることで、メニュー内を移動できます。

あなたが探しているのはニーモニックだと思います。これらは、関連するキーが押されると、どこからでもメニュー項目を起動します。

一般的なニーモニックはAlt-F4、プログラムを強制終了する (それはあなたのCmd-Qためです)、Ctrl-S保存する、Ctrl-Cコピーするなどです。

于 2009-12-09T19:43:37.277 に答える
0

申し訳ありませんが、2行目は正しくありません。誤って K を追加したに違いありません :-) 以前はニーモニックを使用していましたが、メニューをプルダウンして機能させる必要がありました。キーボードショートカットが欲しいだけです。OSX Java doc が示唆しているため、アクセラレータの使用に切り替えました。

于 2009-12-09T19:53:45.313 に答える