Bruce Eckel’s Thinking in Java | Contents | Prev | Next |
concept of a radio
button in GUI programming comes from pre-electronic car radios with mechanical
buttons: when you push one in, any other button that was pressed pops out. Thus
it allows you to force a single choice among many.
AWT does not have a separate class to represent the radio button; instead it
reuses the Checkbox.
However, to put the
Checkbox
in a radio button group (and to change its shape so it’s visually
different from an ordinary
Checkbox)
you must use a special constructor that takes a CheckboxGroup
object as an argument. (You can also call setCheckboxGroup( )
after the
Checkbox
has been created.)
CheckboxGroup
has
no constructor argument; its sole reason for existence is to collect some
Checkboxes
into a group of radio buttons. One of the
Checkbox
objects must have its state set to
true
before you try to display the group of radio buttons; otherwise you’ll
get an exception at run time. If you try to set more than one radio button to
true
then only the final one set will be
true.
a simple example of the use of radio buttons. Note that you capture radio
button events like all others:
//: RadioButton1.java // Using radio buttons import java.awt.*; import java.applet.*; public class RadioButton1 extends Applet { TextField t = new TextField("Radio button 2", 30); CheckboxGroup g = new CheckboxGroup(); Checkbox cb1 = new Checkbox("one", g, false), cb2 = new Checkbox("two", g, true), cb3 = new Checkbox("three", g, false); public void init() { t.setEditable(false); add(t); add(cb1); add(cb2); add(cb3); } public boolean action (Event evt, Object arg) { if(evt.target.equals(cb1)) t.setText("Radio button 1"); else if(evt.target.equals(cb2)) t.setText("Radio button 2"); else if(evt.target.equals(cb3)) t.setText("Radio button 3"); else return super.action(evt, arg); return true; } } ///:~
display the state, an text field is used. This field is set to non-editable
because it’s used only to display data, not to collect it. This is shown
as an alternative to using a
Label.
Notice the text in the field is initialized to “Radio button 2”
since that’s the initial selected radio button.