2011-10-19 2 views
0

私は特にJMenuをビルドしようとしています。 JMenuItemJMenuの機能が必要です。それをクリックすると、項目は何かを行うはずです(ダイアログを開くなど)。しかし、JMenuItemには、ボタンをクリックすると、いくつかのオプションでポップアップが開くボタン(または他のコンポーネント)も含まれているはずです。だから、JButton inside JMenuItem

、今まで私はこのようなものがあります:私は前にある矢印をクリックしたものである

Desired UI

を。

私の問題は、ボタン(矢印)を押すと、実際にサブメニューが開きますが、フォーカスが失われてそのボタンを含むメニュー項目が閉じてしまうことです。矢印ボタンをクリックした後の結果である

Broken UI

これを管理する方法はありますか?または、この動作をするためのより良い方法は?

+1

1つのメニュー項目(メニュー内の1行)に2つの異なる動作をさせたい - テキストをクリックするときに何らかのアクションを実行し、ボタンをクリックしてサブメニューを開く?これはあまりユーザーフレンドリーではないので、サブメニューのmenugroup、つまり新しい(サブ) 'JMenu'を使用することをお勧めします。 – Thomas

+0

私の質問、JMenuItemとしてJMenuにJButtonを入れたのは、基本的な実装に満足していないのですか? – mKorbel

+0

@Thomas:はい、これは私が欲しいものです:テキストをクリックするとアクションを実行し、ボタン。 –

答えて

0

実際にこの問題の解決策を見つけることはできませんでした。 回避策として、新しいポップアップを開くボタン(矢印)を使用する代わりに、オプション1とオプション2を切り替える単純なボタンを使用しました。 ありがとうございました。

1

代わりに単純なネストされたJMenuItemを使用するのはなぜですか? this(上から1番目の画面)のようなものです。

一方、hereと記載されている同様のソリューションのメリットがあります。

2

実装しようとしていることがわかっていれば、あなたを導くことができます。オプションを選択したい場合は、JRadioButtonMenuItemを使ってより良い方法で実装することができます。ボタンを実装してからオプションを選択する必要はありません。しかし、実際に必要なものによって異なります。

+0

私はトーマスの言葉を正確に欲しがっています。私はそれがユーザーフレンドリーではないことを知っていますが、今のところ私はそれをやろうとするべきです。 –

2

これはメニューが意図したものではありません。代わりにribbonを使用してください。これらは簡単で自然なものになります。

+1

私はこのようなメニューを使用して、かなり直感的であることに同意します。リボンは、より良い選択肢のように見えます。 – Thomas