1

奇妙な問題が発生したときに、親JMenuに2つのJMenuを追加しようとしました。

StateListener stL = new StateListener();            
SpeedListener spL = new VitesseListener();

animation.add(speed);
animation.add(state);

 //Add of JRadiobuttons (st1, st2 and st3) to JMenu : state
 state.add(st1); 
 state.add(st2);
 state.add(st3);

  //Add of JRadiobuttons to ButtonGroup : bG1
  bG1.add(st1);
  bG1.add(st2);
  bG1.add(st3);

   //Setting a default selected button
   st2.setSelected(true);

    //Add of an action listener to JRadioButtons (StateListener : stL)
    st1.addActionListener(stL);
    st2.addActionListener(stL);
    st3.addActionListener(stL);

 //Same code, with speed this time
 speed.add(sp1);
 speed.add(sp2); [...]

このコードはうまく機能しますが、以下のコードのように、速度と状態の追加をアニメーションに切り替えると、コードに一種の「バグ」が発生します。実際、マウスを「スピードメニュー」の上に置くと、すべてが動かなくなり、何もできなくなります(プログラムをクリーンな方法で閉じます)。

[...] animation.add(stae);
animation.add(speed); [...]  

あなたの助けに感謝し、私のくだらないことを申し訳ありません(私が下品でなくてもこの単語を使用できるかどうかさえわかりません^^)英語。

4

2 に答える 2

1

私にとっては使用します

this.setPreferredSize(new Dimension(800,245));

レイアウトマネージャーのいずれかを使用している場合。setSize() と setPreferredSize()を参照してください。

于 2012-08-29T10:34:22.510 に答える
0

私の問題が何であるかを見つけました.speedのJMenuには8つのJRadioButtonが含まれていました。私の 8 番目のボタンは (高さが小さすぎる) ウィンドウの外にあり、それが私のプログラムを腐らせていました。私のプログラムが逆の JMenus (最初に速度、2 番目に状態) でうまく機能していたという事実は、状態の JMenu サイズによるものです。確かに、それはより短く (速度のために 8 つではなく 3 つの JRadioButton を含む)、速度の JMenu の下に配置したとき、これは上にあり、もう 1 つの JRadioButton に十分な 20px ほど多くありました。

私は8つの変更でこの問題を解決しました:

this.setSize(800,245);

それ以外の

this.setSize(800,230);

助けてくれてありがとう andrew, SSCCE は私の視点を変えてくれましたか?

于 2012-08-29T10:27:24.597 に答える