This program draws a traffic light. You can change the color of
the light by clicking on the appropriate button.
A BorderLayout is used, with a Panel on the north to contain the buttons, and a Canvas in the center to hold the drawing.
Note: This is a picture of the applet, not the applet itself. The applet itself is not included because Java 1.1 is not supported on Netscape browsers.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
/**
* This applet draws a traffic light. The user controls the color of
* the light (red, yellow, green) by clicking one of three buttons.
* HTML: <applet code="TrafficLight.class" width=200 height=200></applet>
*/
public class TrafficLight extends Applet
{
Button redButton = new Button ("Red");
Button yellowButton = new Button ("Yellow");
Button greenButton = new Button ("Green");
Color currentColor = Color.red;
Panel controls = new Panel ();
DrawingArea drawingArea = new DrawingArea ();
public void init ()
{
setLayout (new BorderLayout ());
add (BorderLayout.NORTH, controls);
controls.add (redButton);
controls.add (yellowButton);
controls.add (greenButton);
add (BorderLayout.CENTER, drawingArea);
redButton.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event)
{
changeColor (Color.red);
}
});
yellowButton.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event)
{
changeColor (Color.yellow);
}
});
greenButton.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event)
{
changeColor (Color.green);
}
});
repaint ();
}
public void paint (Graphics g)
{
drawingArea.paint (drawingArea.getGraphics ());
}
void changeColor (Color newColor)
{
currentColor = newColor;
repaint ();
}
class DrawingArea extends Canvas
{
public void paint (Graphics da)
{
da.setColor (Color.darkGray);
da.fillRect (70, 20, 50, 150);
da.setColor (currentColor == Color.red ? Color.red : Color.gray);
da.fillOval (80, 30, 30, 30);
da.setColor (currentColor == Color.yellow ? Color.yellow : Color.gray);
da.fillOval (80, 80, 30, 30);
da.setColor (currentColor == Color.green ? Color.green : Color.gray);
da.fillOval (80, 130, 30, 30);
}
}
}