Java Reference
In-Depth Information
EXAMPLE:
(continued)
When a button is clicked, the
actionPerformed
method is invoked with the action
event fired as the argument to
actionPerformed
. The method
actionPerformed
recov-
ers the string written on the button with the following line:
String buttonString = e.getActionCommand();
The method
actionPerformed
then uses a multiway
if-else
statement to determine
if
buttonString
is
"Green"
,
"White"
, or
"Gray"
and changes the color of the corre-
sponding panel accordingly. It is common for an
actionPerformed
method to be
based on such a multiway
if-else
statement, although we will see another approach
in the subsection entitled “Listeners as Inner Classes” later in this chapter.
Display 17.11 also introduces one other small but new technique. We gave each
button a color. We did this with the method
setBackground
, using basically the same
technique that we used in previous examples. You can give a button or almost any
other item a color using
setBackground
. Note that you do not use
getContentPane
when adding color to any component other than a
JFrame
.
Display 17.11
Using Panels
(part 1 of 4)
In addition to being the GUI class, the
class
PanelDemo
is the action listener
class. An object of the class
PanelDemo
is the action listener for the buttons in
that object.
1
import
javax.swing.JFrame;
2
import
javax.swing.JPanel;
3
import
java.awt.BorderLayout;
4
import
java.awt.GridLayout;
5
import
java.awt.FlowLayout;
6
import
java.awt.Color;
7
import
javax.swing.JButton;
8
import
java.awt.event.ActionListener;
9
import
java.awt.event.ActionEvent;
10
public class
PanelDemo
extends
JFrame
implements
ActionListener
11
{
12
public static final int
WIDTH = 300;
13
public static final int
HEIGHT = 200;
We made these instance variables
because we want to refer to them in
both the constructor and the
method
actionPerformed
.
14
private
JPanel greenPanel;
15
private
JPanel whitePanel;
16
private
JPanel grayPanel;
17
public static void
main(String[] args)
18
{
19
PanelDemo gui =
new
PanelDemo();
20
gui.setVisible(true);
21
}
(continued)