1

当我看到一个奇怪的问题时,我试图将两个 JMenu 添加到父 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

我发现了我的问题:速度的 JMenu 包含 8 个 JRadioButton。我的第八个按钮在我的窗口外面(高度太小),这就是我的程序腐烂的原因。我的程序在逆向 JMenu(速度第一,状态第二)上运行良好的事实是因为 state 的 JMenu 大小。事实上,它更短(包含 3 个 JRadioButtons 而不是 8 个用于速度的),当我将它放在 speed 的 JMenu 下时,这个是较高的,并且多出 20px 左右,足够多一个 JRadioButton。

我用八个变化解决了这个问题:

this.setSize(800,245);

代替

this.setSize(800,230);

谢谢你的帮助,andrew,做一个 SSCCE 改变了我的观点,我很快就看到了我的问题;)

于 2012-08-29T10:27:24.597 回答