サブメニュー(JMenu)にアクセラレータを追加するユーザーリクエストがあります。これにより、ユーザーはショートカットを押して、対応するサブメニューを「展開」し、含まれているメニュー項目を表示できます。
私は、このようなもの(Javaまたは他の言語のいずれか)を見たすべての人を思い出しません。このアプリケーションは、Swingを使用してJavaで記述されています。正常に動作するアクセラレータを備えたJMenuItemがいくつかありますが、アクセラレータをJMenuに追加しようとすると、次の例外が発生します。
java.lang.Error:setAccelerator()がJMenuに対して定義されていません。代わりにsetMnemonic()を使用してください。
MenuDemoを使ってみました!これをもう少し実験するためのコード。
これは私が試したものです:
//a submenu
menu.addSeparator();
submenu = new JMenu("A submenu");
submenu.setMnemonic(KeyEvent.VK_S);
submenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK));
最後の行は私が追加した行で、例外が発生します。
広範囲にわたるグーグルを試しましたが、JMenuItemにアクセラレータを追加する方法に関する記事しか見つかりません。
JMenuはこれをネイティブにサポートしていないようです。この動作を実現するための回避策はありますか?