package javacodebook.gui.radio; import java.awt.*; import java.awt.event.*; import java.beans.PropertyChangeListener; /** * Das RadioFrame besitzt zwei Checkboxes und ein paar Radiobuttons. * Ein Checkbox wird automatisch zum RadioButton, wenn sie in einer * Checkboxgroup eingebunden ist. Es kann dann nur noch ein Feld ausgewählt * werden. * Beim Klick auf den "Print" Button wird der Status auf der Konsole ausgegeben. */ public class RadioFrame extends Frame { // Diese Checkboxes bleiben tatsächlich Checkboxes private Checkbox milk = null; private Checkbox sugar = null; // Diese Checkboxes werden später zu RadioButtons private CheckboxGroup group = new CheckboxGroup(); private Checkbox male = null; private Checkbox female = null; private Button print = new Button("Print"); /** * Konstruktor von RadioFrame. */ public RadioFrame(String title) { super(title); setLayout(new FlowLayout()); buildCheckbox(); buildRadiobuttons(); add(print); print.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ System.out.println("Auswahl: "); // Man kann den selektierten RadioButton // über die CheckboxGroup bestimmen System.out.println("\t" + group.getSelectedCheckbox().getLabel()); // Bei Checkboxes fragt man den Status direkt ab. if(milk.getState()) System.out.println("\tMilch"); if(sugar.getState()) System.out.println("\tZucker"); } }); } /** * Zwei Checkboxen werden gebaut und aufs Frame gelegt */ private void buildCheckbox() { // Bei der einfachen Checkbox verhält sich alles sehr einfach! milk = new Checkbox("Milch"); sugar = new Checkbox("Zucker"); add(milk); add(sugar); } /** * Zwei Radiobuttons werden gebaut und aufs Frame gelegt */ private void buildRadiobuttons() { // Eine Checkbox wird automatisch zum RadioButton, wenn eine // Checkboxgroup im Konstruktor mit übergeben wird. // Über den dritten Parameter wird die Vorbelegung festgelegt. male = new Checkbox("männlich", group, true); female = new Checkbox("weiblich", group, false); add(male); add(female); } }