为什么我的按钮组不起作用和显示?

问题描述

我正在学习和新的 GUI,在这个程序中使用了 ECLIPSE IDE(拖放窗口构建器)

我为性别声明了两个单选按钮:男性和女性

如果它点击男性或女性按钮,它应该只(点击一个)并转到那个按钮而不是两个,因此我希望它自动取消选择另一个按钮以避免重复选择

所以我已经做了一些研究和 import javax.swing.ButtonGroup; 但我仍然不明白为什么它不起作用,因为我仍然可以点击这两个单选按钮。 我认为这与我的面板有关吗?

为什么会发生这种情况,我该如何解决

这是我的程序

public AddRecord() {

    setUndecorated(true);
    setBackground(Color.WHITE);
    setVisible(true);
    setDefaultCloSEOperation(JFrame.HIDE_ON_CLOSE);
    setBounds(100,100,1063,640);
    contentPane = new JPanel();
    contentPane.setBounds(new Rectangle(5,0));
    contentPane.setBackground(new Color(255,255,240));
    contentPane.setBorder(new LineBorder(new Color(0,28),1,true)); 
    setLocationRelativeto(null);    
    setContentPane(contentPane);
    contentPane.setLayout(null);  
    
    JPanel pnlInfo = new JPanel();
    pnlInfo.setBounds(24,20,1015,597);
    contentPane.add(pnlInfo);
    pnlInfo.setLayout(null);
    
    JLabel lblGender = new JLabel("Gender:");
    lblGender.setBounds(32,174,50,10);
    pnlInfo.add(lblGender);
    lblGender.setFont(new Font("Tahoma",Font.PLAIN,11));
    
    ButtonGroup btnBg = new ButtonGroup();  
    btnBg.add(rdbtnMale);
    btnBg.add(rdbtnFemale);     

    JRadioButton rdbtnMale  = new JRadioButton("Male");
    rdbtnMale.setBounds(79,169,55,21);
    pnlInfo.add(rdbtnMale);

    JRadioButton rdbtnFemale = new JRadioButton("Female");
    rdbtnFemale.setBounds(136,76,21);
    pnlInfo.add(rdbtnFemale); 
}

解决方法

你的代码甚至无法编译,

移动线条

ButtonGroup btnBg = new ButtonGroup();  
btnBg.add(rdbtnMale);
btnBg.add(rdbtnFemale);  

到代码的末尾

喜欢这个

    setUndecorated(true);
    setBackground(Color.WHITE);
    setVisible(true);
    setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    setBounds(100,100,1063,640);
    JPanel contentPane = new JPanel();
    contentPane.setBounds(new Rectangle(5,0));
    contentPane.setBackground(new Color(255,255,240));
    contentPane.setBorder(new LineBorder(new Color(0,28),1,true));
    setLocationRelativeTo(null);
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JPanel pnlInfo = new JPanel();
    pnlInfo.setBounds(24,20,1015,597);
    contentPane.add(pnlInfo);
    pnlInfo.setLayout(null);

    JLabel lblGender = new JLabel("Gender:");
    lblGender.setBounds(32,174,50,10);
    pnlInfo.add(lblGender);
    lblGender.setFont(new Font("Tahoma",Font.PLAIN,11));


    JRadioButton rdbtnMale  = new JRadioButton("Male");
    rdbtnMale.setBounds(79,169,55,21);
    pnlInfo.add(rdbtnMale);

    JRadioButton rdbtnFemale = new JRadioButton("Female");
    rdbtnFemale.setBounds(136,76,21);
    pnlInfo.add(rdbtnFemale);

    ButtonGroup btnBg = new ButtonGroup();
    btnBg.add(rdbtnMale);
    btnBg.add(rdbtnFemale);