Checkboxes and Radio Buttons - Con't
DriveThrough lays out three panels. The radio
buttons in the entreePanel are tied together through
a ButtonGroup object. We add( ) the buttons to a
ButtonGroup to make them mutually exclusive. The
ButtonGroup object is an odd animal. One expects it
to be a container or a component, but it isn't; it's simply a
helper object that allows only one RadioButton to be
selected at a time.
In this example, the button group forces you to choose a beef,
chicken, or veggie entree, but not more than one. The condiment
choices, which are JCheckBoxes, aren't in a button
group, so you can request any combination of ketchup, mustard,
and pickles on your sandwich.
When the Place Order button is pushed, we receive an
ActionEvent in the actionPerformed( )
method of our inner ActionListener. At this point,
we gather the information in the radio buttons and checkboxes and
print it. actionPerformed( ) simply reads the state
of the various buttons. We could have saved references to the
buttons in a number of ways; this example demonstrates two.
First, we find out which entree was selected. To do so, we call
the ButtonGroup's getSelection( )
method. This returns a ButtonModel, upon which we
immediately call getActionCommand( ). This returns
the action command as we set it when we created the radio
buttons. The action commands for the buttons are the entrée
names, which is exactly what we need.
To find out which condiments were selected, we use a more
complicated procedure. The problem is that condiments aren't
mutually exclusive, so we don't have the convenience of a
ButtonGroup. Instead, we ask the condiments
JPanel for a list of its components. The
getComponents( ) method returns an array of
references to the container's child components. We'll use this to
loop over the components and print the results. We cast each
element of the array back to JCheckBox and call its
isSelected( ) method to see if the checkbox is on or
off. If we were dealing with different types of components in the
array, we could determine each component's type with the
instanceof operator.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.