单选按钮未按预期显示

时间:2020-01-09 02:08:57

标签: java swing jradiobutton

每当我运行此代码时,单选按钮都会正确显示,直到我进入或悬停在窗口中为止,然后它仅显示其中一个收音机,而我只能通过将它们悬停在其中来查看其他收音机。

为什么直到我将鼠标悬停在窗口或选项卡上时单选按钮才会显示?

    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);

1 个答案:

答案 0 :(得分:1)

每当我运行此代码时,单选按钮都会正确显示,直到我进入或悬停在窗口中为止

这是因为当您“签到”或将鼠标悬停在单选按钮上时,会触发对repaint()的调用,该调用负责绘制GUI。

在这种情况下,怪异的行为是由于您有以下一行:

frame1.setVisible(true);

将所有其他组件添加到JFrame之前。但这只是问题的开始,因为您最终会发现其他错误,例如GUI不能在其他非您用于编写程序的计算机上正确绘制,这是由于对{{ 1}},建议您使用is evilfrowned uppon中的setBounds(...)。相反,要学习如何使用和混合不同的layout managers,否则您将处于类似于this one

的情况