4

JMenuBar、JMenu、およびJMenuItemを使用したメニューを備えたJava/Swingアプリケーションを開発しています。

システムルックアンドフォールがUIに適用されます。

UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );

メニューにはいくつかのトップレベルの要素があります:

  • JMenuの「ファイル」は正常に機能し、ユーザーはJMenuItemsの「新規」、「開く」などのサブメニューを選択できます。

  • 次に、クリックするとポップアップを表示する2番目のトップレベル要素「About」(「File」と同じレベル)を追加します。

問題は非常に単純です。このJMenuの「About」要素をクリック可能にする方法は?

私はいくつかの方法を試します:

  1. 「About」要素をJMenuItemとして設定します。ただし、この要素のUIは、「ファイル」などの他のJMenuアイテムと同じではありません。

  2. 「About」要素をJMenuとして設定し、MouseListenerKeyListener追加します。この要素のUIは他の要素と同じですが、このイベントをキャッチするには、[バージョン情報]ポップアップの[OK]ボタンを2回クリックする必要があります。

他の解決策はありますか?

4

1 に答える 1

4

私の最初の提案は、JMenuの「About」メニュー内に1つのJMenuItemを追加することです。これは他のメニューの動作と一致し、同じように見えるためです。また、ユーザーがメニューを期待して[バージョン情報]をクリックしたが、代わりにポップアップが表示された場合も驚くことではありません。アプリケーションでは、ポップアップを表示する「About」という名前のメニュー項目があるメニューバーの最後に「Help」メニューがあるのはかなり一般的です。メニュータイトルをクリックしたときにポップアップが開くことは一般的ではありません。

あなたが本当にあなたの提案をしなければならないなら、次のいずれかです:

  • ルックアンドフィール(Nimbusなど)を指定し、JMenuItemをメニューアイテムのように変更します。

また

  • 2番目のオプションが機能する方法を見つけます。これは実行可能に聞こえますが、さらに調整が必要になる可能性があり、UIをシステムのルックアンドフィールで正しく機能させるのがより困難になります。
于 2011-07-27T17:01:40.167 に答える