每当我选择任何单选按钮时,它都会自动选择最后一个,我该怎么办?

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。