package gui; /** * RUN: * javac -cp .; gui/ButtonGroups.java && java -cp .; gui.ButtonGroups * OUTPUT: * */ import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.lang.reflect.*; import net.mindview.util.*; public class ButtonGroups extends JFrame { private static final int WIDTH = 500; private static final int HEIHGT = 350; private static String[] ids = {"June", "Ward", "Beaver", "Wally", "Eddie", "Lumpy"}; static JPanel makeBPanel(Class kind, String[] ids) { ButtonGroup bg = new ButtonGroup(); JPanel jp = new JPanel(); String title = kind.getName(); title = title.substring(title.lastIndexOf('.')+1); jp.setBorder(new TitledBorder(title)); for (String id : ids) { AbstractButton ab = new JButton("failed"); try { Constructor ctor = kind.getConstructor(String.class); ab = (AbstractButton) ctor.newInstance(id); } catch (Exception ex) { System.err.println("can't create " + kind); } bg.add(ab); jp.add(ab); } return jp; } public ButtonGroups() { setLayout(new FlowLayout()); add(makeBPanel(JButton.class, ids)); add(makeBPanel(JToggleButton.class, ids)); add(makeBPanel(JCheckBox.class, ids)); add(makeBPanel(JRadioButton.class, ids)); } public static void main(String[] args) { SwingConsole.run(new ButtonGroups(), WIDTH, HEIHGT); } }