如何确保在Java中只选择了一个JRadioButton?
How Do I Make Sure Only One JRadioButton Is Selected In Java?
我在 JPanel
中添加了三个 JRadioButton
。但是,当我 select 一个时,我可以 select 另一个,而前一个 selected 保持 selected。我如何确保一次只有一个 selected?
我的JPanel
class,这是我主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
我在 JPanel
中添加了三个 JRadioButton
。但是,当我 select 一个时,我可以 select 另一个,而前一个 selected 保持 selected。我如何确保一次只有一个 selected?
我的JPanel
class,这是我主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