每当我选择任何单选按钮时,它都会自动选择最后一个,我该怎么办?
Whenever I chose any radioButton it automatically selects the last one, What should I do?
下面是我在我的 Swing 应用程序中使用的一小段代码,它是一个 mcq 应用程序,我在其中使用 radioButtons 作为 select 所选选项的平均值,但是当我尝试 selecting 1-4 中的任何选项,它自动 select 是最后一个。现在我也尝试将最后一个按钮放在 else if 条件中,但我不知道我应该在 else 条件下写什么。
JButton btnNext_1 = new JButton("Next");
btnNext_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* if(db_ans.equals(studentAnswer))
{
tmarks=tmarks+db_marks;
System.out.println("correct-second");
}*/
buttonGroup.clearSelection();
if(radioButton.isSelected())
{
studentAnswer=radioButton.getText();
radioButton_1.setSelected(false);
radioButton_2.setSelected(false);
radioButton_3.setSelected(false);
System.out.println(studentAnswer);
}
else if(radioButton_1.isSelected())
{
studentAnswer=radioButton_1.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_2.setSelected(false);
radioButton_3.setSelected(false);
}
else if(radioButton_2.isSelected())
{
studentAnswer=radioButton_2.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_1.setSelected(false);
radioButton_3.setSelected(false);
}
else if {
studentAnswer=radioButton_3.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_1.setSelected(false);
radioButton_2.setSelected(false);
}
if(db_ans.equals(studentAnswer))
{
tmarks=tmarks+db_marks;
System.out.println("correct-second");
}
});
您已选中所有单选按钮,因此 android 是最后一个读取意味着 radioButton_2 此读取是最后一个,因此选中了 radioButton2
如评论中所述,您可能希望使用 ButtonGroup
这将一次只允许 JRadioButton
编辑 select,请参见下面的简单示例:
TestApp.java:
import java.awt.event.ActionEvent;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
public class TestApp {
public TestApp() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestApp::new);
}
private void initComponents() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JRadioButton option1 = new JRadioButton("Option 1");
option1.setSelected(true);
JRadioButton option2 = new JRadioButton("Option 2");
ButtonGroup group = new ButtonGroup();
group.add(option1);
group.add(option2);
panel.add(option1);
panel.add(option2);
JButton button = new JButton("What did I choose?");
button.addActionListener((ActionEvent e) -> {
if (option1.isSelected()) {
JOptionPane.showMessageDialog(frame, "You chose option 1");
} else if (option2.isSelected()) {
JOptionPane.showMessageDialog(frame, "You chose option 2");
}
});
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
基本上每个 JRadioButton
都被添加到同一个 ButtonGroup
,然后每个 JRadioButton
被添加到面板。现在您只能从同一组中选择 select 1 个选项,而无需将同一组中的任何其他 JRadioButton
设置为 false。
下面是我在我的 Swing 应用程序中使用的一小段代码,它是一个 mcq 应用程序,我在其中使用 radioButtons 作为 select 所选选项的平均值,但是当我尝试 selecting 1-4 中的任何选项,它自动 select 是最后一个。现在我也尝试将最后一个按钮放在 else if 条件中,但我不知道我应该在 else 条件下写什么。
JButton btnNext_1 = new JButton("Next");
btnNext_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* if(db_ans.equals(studentAnswer))
{
tmarks=tmarks+db_marks;
System.out.println("correct-second");
}*/
buttonGroup.clearSelection();
if(radioButton.isSelected())
{
studentAnswer=radioButton.getText();
radioButton_1.setSelected(false);
radioButton_2.setSelected(false);
radioButton_3.setSelected(false);
System.out.println(studentAnswer);
}
else if(radioButton_1.isSelected())
{
studentAnswer=radioButton_1.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_2.setSelected(false);
radioButton_3.setSelected(false);
}
else if(radioButton_2.isSelected())
{
studentAnswer=radioButton_2.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_1.setSelected(false);
radioButton_3.setSelected(false);
}
else if {
studentAnswer=radioButton_3.getText();
System.out.println(studentAnswer);
radioButton.setSelected(false);
radioButton_1.setSelected(false);
radioButton_2.setSelected(false);
}
if(db_ans.equals(studentAnswer))
{
tmarks=tmarks+db_marks;
System.out.println("correct-second");
}
});
您已选中所有单选按钮,因此 android 是最后一个读取意味着 radioButton_2 此读取是最后一个,因此选中了 radioButton2
如评论中所述,您可能希望使用 ButtonGroup
这将一次只允许 JRadioButton
编辑 select,请参见下面的简单示例:
TestApp.java:
import java.awt.event.ActionEvent;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
public class TestApp {
public TestApp() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestApp::new);
}
private void initComponents() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JRadioButton option1 = new JRadioButton("Option 1");
option1.setSelected(true);
JRadioButton option2 = new JRadioButton("Option 2");
ButtonGroup group = new ButtonGroup();
group.add(option1);
group.add(option2);
panel.add(option1);
panel.add(option2);
JButton button = new JButton("What did I choose?");
button.addActionListener((ActionEvent e) -> {
if (option1.isSelected()) {
JOptionPane.showMessageDialog(frame, "You chose option 1");
} else if (option2.isSelected()) {
JOptionPane.showMessageDialog(frame, "You chose option 2");
}
});
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
基本上每个 JRadioButton
都被添加到同一个 ButtonGroup
,然后每个 JRadioButton
被添加到面板。现在您只能从同一组中选择 select 1 个选项,而无需将同一组中的任何其他 JRadioButton
设置为 false。