当我看到一个奇怪的问题时,我试图将两个JMenus添加到父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); [...]
这段代码效果很好,但是当我将速度和状态添加到动画时,就像我在下面的代码中所做的那样,代码有一种“bug”。事实上,当我将鼠标移到“速度菜单”上时,一切都被卡住了,我无法做任何事情(以干净的方式关闭程序):
[...] animation.add(stae);
animation.add(speed); [...]
感谢您的帮助,对不起我的蹩脚(我甚至不知道我是否可以使用这个词而不是粗俗的^^)英语。
答案 0 :(得分:1)
对我来说,我会用
this.setPreferredSize(new Dimension(800,245));
如果你正在使用任何布局管理器。见setSize() vs. setPreferredSize()
答案 1 :(得分:0)
我发现了我的问题:速度的JMenu包含8个JRadioButton。我的第八个按钮出了我的窗户(高度太小),这就是腐烂我的程序。我的程序与反向JMenus(首先是速度和第二速度)一起工作的事实是因为州的JMenu大小。事实上,它更短(包含3个JRadioButtons而不是8个速度),当我把它放在速度的JMenu之下时,这个是上层,并且有20px以上的东西,足够一个JRadioButton。
我用八个方法解决了这个问题:
this.setSize(800,245);
而不是
this.setSize(800,230);
谢谢你的帮助安德鲁,做了一个SSCCE改变了我的观点,我很快就看到了我的问题;)