Как убедиться, что в Java выбран только один JRadioButton? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть три JRadioButton s, добавленных к JPanel. Однако, когда я выбираю один, я могу выбрать другой, и предыдущий выбранный остается выбранным. Как я могу убедиться, что только один выбран одновременно?

Мой JPanel класс, который добавляется моим основным 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);
    }


}

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Поскольку вы не поделились полным кодом, я не могу сказать, как это сделать в вашем случае, но в целом

Это можно сделать так

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. класс качелей

0 голосов
/ 10 марта 2020

Вы можете сначала добавить JRadioButton s в экземпляр ButtonGroup. Вот простой пример:

// 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.
...