Java Swing按钮组单击即清除

Java Swing按钮组单击即清除,java,swing,radio-button,jpanel,Java,Swing,Radio Button,Jpanel,我有一个按钮组和两个单选按钮: private javax.swing.JRadioButton jRadioButtonESPRINCIPAL; private javax.swing.JRadioButton jRadioButtonESSECUNDARIO; buttonGroup1 = new javax.swing.ButtonGroup(); 我知道我可以通过buttonGroup1.clearSelection()清除组,但我只想在单击单选按钮时执行此操作 我试过了 pr

我有一个按钮组和两个单选按钮:

private javax.swing.JRadioButton jRadioButtonESPRINCIPAL;
private javax.swing.JRadioButton jRadioButtonESSECUNDARIO;
buttonGroup1 = new javax.swing.ButtonGroup();
我知道我可以通过buttonGroup1.clearSelection()清除组,但我只想在单击单选按钮时执行此操作

我试过了

    private void jRadioButtonESPRINCIPALMouseClicked(java.awt.event.MouseEvent evt) {                                                     
    if (jRadioButtonESPRINCIPAL.isSelected()) {
        buttonGroup1.clearSelection();
    }
    else{
        jRadioButtonESPRINCIPAL.setSelected(true);
    }
}                                                    

private void jRadioButtonESSECUNDARIOMouseClicked(java.awt.event.MouseEvent evt) {                                                      
    if (jRadioButtonESSECUNDARIO.isSelected()) {
        buttonGroup1.clearSelection();
    }
    else{
        jRadioButtonESSECUNDARIO.setSelected(true);
    }
}   
但这不起作用


任何帮助都将不胜感激

我之前的回答是错误的,对不起。您必须像这样使用
ActionListeners

    jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //your code goes here
        }
    });
    jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (jRadioButtonESPRINCIPAL.equals(lastSelectedRadioButton)) {
                buttonGroup1.clearSelection();
                lastSelectedRadioButton = null;
            }
            else {
                lastSelectedRadioButton = jRadioButtonESPRINCIPAL;
            }
        }
    });

    jRadioButtonESSECUNDARIO.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (jRadioButtonESSECUNDARIO.equals(lastSelectedRadioButton)) {
                buttonGroup1.clearSelection();
                lastSelectedRadioButton = null;
            }
            else {
                lastSelectedRadioButton = jRadioButtonESSECUNDARIO;
            }
        }
    });
然后使用变量存储最后选择的
单选按钮
。在
ActionListener
中,您必须检查
isSelected()
是否等于最后一个选择。如果是,则使用
按钮组1.clearSelection()

最后的代码应该是这样的:

    jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //your code goes here
        }
    });
    jRadioButtonESPRINCIPAL.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (jRadioButtonESPRINCIPAL.equals(lastSelectedRadioButton)) {
                buttonGroup1.clearSelection();
                lastSelectedRadioButton = null;
            }
            else {
                lastSelectedRadioButton = jRadioButtonESPRINCIPAL;
            }
        }
    });

    jRadioButtonESSECUNDARIO.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (jRadioButtonESSECUNDARIO.equals(lastSelectedRadioButton)) {
                buttonGroup1.clearSelection();
                lastSelectedRadioButton = null;
            }
            else {
                lastSelectedRadioButton = jRadioButtonESSECUNDARIO;
            }
        }
    });

您的代码的哪一部分调用了这些方法?我觉得在这里使用是一个更好的选择。@Berger我有两个单选按钮来调用这些方法。这对我不起作用:(,我想在您单击已单击的按钮时清除组。我更新了我的答案,请用新代码重试