package ui; import java.awt.FlowLayout; import java.util.HashMap; import java.util.Map; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; import javax.swing.JPanel; import javax.swing.JRadioButton; /** * * @author Mark George <mark.george@otago.ac.nz> */ public class RadioGroup extends JPanel { private Integer min; private Integer max; private final Map<Integer, JRadioButton> radios = new HashMap<>(); private final Map<ButtonModel, Integer> models = new HashMap<>(); private final ButtonGroup group = new ButtonGroup(); public RadioGroup(int min, int max) { this.min = min; this.max = max; this.setLayout(new FlowLayout()); for (int i = min; i <= max; i++) { JRadioButton rad = new JRadioButton(); rad.setText(String.valueOf(i)); radios.put(i, rad); group.add(rad); models.put(rad.getModel(), i); this.add(rad); } } public void setSelected(Integer idx) { JRadioButton rad = radios.get(idx); group.setSelected(rad.getModel(), true); } public void setMin(Integer min) { this.min = min; } public void setMax(Integer max) { this.max = max; } public void max() { setSelected(max); } public void zero() { setSelected(0); } public Integer getSelected() { return models.get(group.getSelection()); } public void clearSelection() { group.clearSelection(); } // public void setRange(int min, int max) { // this.min = min; // this.max = max; // // radios.clear(); // models.clear(); // group = new ButtonGroup(); // this.removeAll(); // // for (int i = min; i <= max; i++) { // JRadioButton rad = new JRadioButton(); // rad.setText(String.valueOf(i)); // radios.put(i, rad); // group.add(rad); // models.put(rad.getModel(), i); // this.add(rad); // } // } }