【问题标题】:Why does my button group doesnt work and display?为什么我的按钮组不起作用和显示?
【发布时间】:2021-05-17 11:41:31
【问题描述】:

我正在学习和 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, 0, 0));
    contentPane.setBackground(new Color(255, 255, 240));
    contentPane.setBorder(new LineBorder(new Color(0, 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, 169, 76, 21);
    pnlInfo.add(rdbtnFemale); 
}

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,edit 添加minimal reproducible exampleShort, Self Contained, Correct Example。 (而不是不可编译的代码 sn-p - 它甚至可能不包含错误。) 2)Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同的语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
  • 顺便说一句 - 删除每个 static 声明。这通常会增加而不是解决问题。

标签: java swing user-interface radio-button buttongroup


【解决方案1】:

您的代码甚至无法编译,

移动线条

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, 0, 0));
    contentPane.setBackground(new Color(255, 255, 240));
    contentPane.setBorder(new LineBorder(new Color(0, 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, 169, 76, 21);
    pnlInfo.add(rdbtnFemale);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多