Java Swing 按钮组单击时清除

标签 java swing radio-button jpanel

我有一个按钮组,其中有 2 个单选按钮:

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
        }
    });

然后使用一个变量来存储最后选择的RadioButton。在 ActionListener 中,您必须检查 isSelected() 是否等于最后一个选择。如果是,则使用 buttonGroup1.clearSelection();

所以最终的代码应该是这样的:

    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;
            }
        }
    });

关于Java Swing 按钮组单击时清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41263947/

相关文章:

java - 使用 Activity 类在 fragment 类中调用方法

java - 如果父实体没有 ID,则直接保存 OneToMany 实体

java - 基本 GUI Swing - 组件未显示

Java jFrame Canvas 绘制点而不是线

javascript - HTML/Javascript && If 语句中的条件

java - 使用 JDBC 对 MySQL 进行低优先级更新——如何检查它们是否有效

java - JTable 渲染器中的按钮文本不可见。为什么?

java - 如何在多个框架之间切换时处理表单数据

jquery - 为什么是:first-child not working?

grails - 单选按钮,真或假