Ethan Moore
Ethan Moore

Reputation: 401

Reset radio buttons in Java

I have three radio buttons in one button group. I want, on JButton click, for the radio buttons to be reset so they're unfilled. I've tried the logical suggestions that come up with you type .set and all of the booleans didn't do what I wanted it to do. So if you have suggestions that would be greatly appreciated. Thanks!

Upvotes: 0

Views: 1959

Answers (1)

MadProgrammer
MadProgrammer

Reputation: 347284

Simply use ButtonGroup#clearSelection

For example...

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JRadioButton[] buttons;
        private ButtonGroup buttonGroup;

        public TestPane() {
            buttons = new JRadioButton[] {
                new JRadioButton("Nuclear"),
                new JRadioButton("Gas"),
                new JRadioButton("Stream"),
                new JRadioButton("Peddle"),
                new JRadioButton("Electric")
            };
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.weightx = 1;
            gbc.anchor = GridBagConstraints.WEST;
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            buttonGroup = new ButtonGroup();
            for (JRadioButton btn : buttons) {
                add(btn, gbc);
                buttonGroup.add(btn);
            }

            JButton clear = new JButton("Clear");
            add(clear, gbc);

            clear.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    buttonGroup.clearSelection();
                }
            });
        }

    }

}

Upvotes: 2

Related Questions