1

JCheckBox からアクションを実行する際に問題が発生しています。

JMenu topMenu = new JMenu("Top Menu");

MyAction action1 = new MyAction("Action1");
MyAction action2 = new MyAction("A2");

JCheckBox checkBox1 = new JCheckBox( action1 );
JCheckBox checkBox2 = new JCheckBox( action2 );

topMenu.add( checkBox1 );
topMenu.add( checkBox2 );

topMenu にマウスを合わせると、「Action1」および「A2」というラベルの付いた JCheckBox が展開されて表示されます。チェックボックスまたはテキストをクリックすると、チェックボックスが切り替わります。

この部分は説明が少し難しいです: "A2" の右側に空の領域があります - "Action1" はより多くのスペースを占有するため、topMenu にカーソルを合わせたときに表示されるサブメニューは "Action1" の幅になります。「A2」行は同じ幅になりますが、チェックボックスと「A2」のみがアクションを起動します。

「A2」テキストの右側をクリックしても何も起こりません。可能な限り簡単な方法でこれを修正するにはどうすればよいですか?

4

1 に答える 1

5

JCheckBox をメニューに追加しないでください。代わりにメニュー バリアントを使用します: JCheckBoxMenuItemメニュー チュートリアルでは、これらの使用方法について説明します。

例えば、

JMenu topMenu = new JMenu("Top Menu");

MyAction action1 = new MyAction("Action1");
MyAction action2 = new MyAction("A2");

JCheckBoxMenuItem checkBox1 = new JCheckBoxMenuItem( action1 );
JCheckBoxMenuItem checkBox2 = new JCheckBoxMenuItem( action2 );

topMenu.add( checkBox1 );
topMenu.add( checkBox2 );
于 2012-09-11T16:29:54.753 に答える