每当我运行此代码时,单选按钮都会正确显示,直到我进入或悬停在窗口中为止,然后它仅显示其中一个收音机,而我只能通过将它们悬停在其中来查看其他收音机。
为什么直到我将鼠标悬停在窗口或选项卡上时单选按钮才会显示?
JRadioButton rDollar1 = new JRadioButton("Dollars");
JRadioButton rCDollar1 = new JRadioButton("Canadian Dollars");
JRadioButton rMPesos1 = new JRadioButton("Mexican Pesos");
JRadioButton rCPesos1 = new JRadioButton("Colombian Pesos");
ButtonGroup bg1 = new ButtonGroup();
bg1.add(rDollar1);
bg1.add(rCDollar1);
bg1.add(rMPesos1);
bg1.add(rCPesos1);
frame1.setSize(500, 500);
frame1.setVisible(true);
frame1.add(rDollar1);
frame1.add(rCDollar1);
frame1.add(rMPesos1);
frame1.add(rCPesos1);
rDollar1.setBounds(10, 50, 50, 20);
rDollar1.setVisible(true);
rCDollar1.setBounds(10, 100, 50, 20);
rCDollar1.setVisible(true);
rMPesos1.setBounds(10, 150, 50, 20);
rMPesos1.setVisible(true);
rCPesos1.setBounds(10, 200, 50, 20);
rCPesos1.setVisible(true);
答案 0 :(得分:1)
每当我运行此代码时,单选按钮都会正确显示,直到我进入或悬停在窗口中为止
这是因为当您“签到”或将鼠标悬停在单选按钮上时,会触发对repaint()
的调用,该调用负责绘制GUI。
在这种情况下,怪异的行为是由于您有以下一行:
frame1.setVisible(true);
将所有其他组件添加到JFrame
之前。但这只是问题的开始,因为您最终会发现其他错误,例如GUI不能在其他非您用于编写程序的计算机上正确绘制,这是由于对{{ 1}},建议您使用is evil和frowned uppon中的setBounds(...)
。相反,要学习如何使用和混合不同的layout managers,否则您将处于类似于this one