2011-07-27 20 views
4

私はJMenuBar、JMenu、JMenuItemを使ってメニューを使ってJava/Swingアプリケーションを開発しています。JMenu要素をクリックする方法を教えてください。

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

  • JMenuの「ファイル」は正常に動作し、ユーザーがJMenuItems「新規」、「開く」のようなサブメニューを選択することができます...:

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    

    は、私は私のメニューのためのいくつかのトップレベルの要素を持っています

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

問題は非常に簡単です:要素のクリック可能な「について」このJMenuのを作る方法?

は、私はいくつかの方法を試してみてください。

  1. のJMenuItemとして "について" の要素を設定します。ただし、この要素は同じUIその「ファイル」

  2. のような他のJMenuの項目がJMenuにとして「について」の要素を設定し、それにのMouseListenerのKeyListenerを追加していません。この要素は他のユーザーと同じUIを持ちますが、このイベントをキャッチするには、[情報]ポップアップの[OK]ボタンを2回クリックしなければなりません。

他の解決方法はありますか?

答えて

4

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

あなたが本当にあなたはどちらかそれから提案する何をする必要がある場合:

  • は(ニンバスのような)ルック・アンド・フィールを指定して、メニュー項目のように見えるのJMenuItemを変更します。

または

  • 2番目のオプションが機能するための方法を探します。これは実行可能なように聞こえますが、もう少し調整する必要があり、システムルックアンドフィールでUIを正しく動作させることは難しくなります。
+1

トップレベルのメニュー項目でダイアログを開くのが悪いことに同意します。 – Chris

+0

あなたの答えをありがとう。私は "Help> About"メニューを実装します。これは、良いUIでトップレベルの "About"メニューをクリックできるようにするためのスパゲティ・クルージュのようです。クライアントがこの解決策に同意すると、私は後で見ていきます。再度、感謝します! – Sly

関連する問題