如何确保在Java中只选择了一个JRadioButton?

How Do I Make Sure Only One JRadioButton Is Selected In Java?

我在 JPanel 中添加了三个 JRadioButton。但是,当我 select 一个时,我可以 select 另一个,而前一个 selected 保持 selected。我如何确保一次只有一个 selected?

我的JPanelclass,这是我主JFrame添加的:

public class MainPanel extends JPanel {

    private static JRadioButton addHouse, addRoad, calculateDist;

    static {
        addHouse = new JRadioButton("Add House");
        addRoad = new JRadioButton("Add Road");
        calculateDist = new JRadioButton("Calculate Distance");
    }

    MainPanel() {
        setBackground(Color.WHITE);

        addHouse.setBounds(50, 50, 100, 50);
        addRoad.setBounds(50, 150, 100, 50);
        addHouse.setBounds(50, 250, 100, 50);

        addHouse.setBackground(Color.WHITE);
        addRoad.setBackground(Color.WHITE);
        calculateDist.setBackground(Color.WHITE);

        add(addHouse);
        add(addRoad);
        add(calculateDist);
    }


}

您可以先在 ButtonGroup 实例中添加 JRadioButton。这是一个简单的例子:

// configure buttons bounds, background etc.

ButtonGroup buttonGroup= new ButtonGroup();
buttonGroup.add(addHouse);
buttonGroup.add(addRoad);
buttonGroup.add(calculateDist);

// add the buttons to the panel too.

因为你没有分享完整的代码,所以我不知道你的情况下该怎么做,但总的来说

可以这样

ButtonGroup buttonGroup = new ButtonGroup() // create a button group , buttons in a button group knows how to behave together 
JRadioButton radioButton1 = new JRadioButton("R1"); // create your buttons 
JRadioButton radioButton2 = new JRadioButton("R2"); // as many you want

buttonGroup.add(radioButton1); // make them part of group
buttonGroup.add(radioButton2);
myJFrame.setLayout(new FlowLayout()); // or any layout you want
myJFrame.add(radioButton1);    // add buttons to jframe 
myJFrame.add(radioButton1); 

当按钮被添加到 JFrame(或任何其他容器)时,它们是组的一部分,因此组处理它们之间的通信,现在您一次只能检查一个, 尝试评论 buttonGroup.add();你会失去那种行为。

同样的事情可以手动实现,那样的话你会跟踪所有其他单选按钮 在每次选择时检查其他人是否已经选中然后取消选中它们,这很乏味所以最好使用 ButtonGroup class of swing