Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.JFrame;
- public class TrafficLight
- {
- //----------------------------------------------
- // Creates the main program frame.
- //----------------------------------------------
- public static void main(String[] args)
- {
- JFrame frame = new JFrame("Traffic Light");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.getContentPane().add(new TrafficControlPanel());
- frame.pack();
- frame.setVisible(true);
- }
- }
- //**********************************************************************************
- //**********************************************************************************
- //**********************************************************************************
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- public class TrafficControlPanel extends JPanel
- {
- private JButton switchLight;
- TrafficLightPanel lightPanel = new TrafficLightPanel();
- public TrafficControlPanel()
- {
- switchLight = new JButton("Change Light");
- switchLight.addActionListener(new ChangeListener());
- add(lightPanel, BorderLayout.CENTER);
- add(switchLight, BorderLayout.SOUTH);
- }
- private class ChangeListener implements ActionListener
- {
- public void actionPerformed(ActionEvent event)
- {
- lightPanel.change();
- }
- }
- }
- //**********************************************************************************
- //**********************************************************************************
- //**********************************************************************************
- //********************************************************************
- // TrafficLightPanel.java
- //********************************************************************
- import javax.swing.*;
- import java.awt.*;
- public class TrafficLightPanel extends JPanel
- {
- private int currentState = 0;
- private final int NUM_LIGHTS = 3; // the number of lights
- private final int X = 50, Y = 10, WIDTH = 50, HEIGHT = 130; //box
- //size
- private final int DIAMETER = 30; // light diameter
- private final int X_OFFSET = 10, Y_OFFSET = 10; // offsets to
- //position the lights in the box
- private final int PANEL_WIDTH = 150, PANEL_HEIGHT = 230; // the size
- //of a traffic control panel
- //-----------------------------------------------------------------
- // Creates the traffic light panel
- //-----------------------------------------------------------------
- public TrafficLightPanel()
- {
- setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
- }
- public void paintComponent(Graphics page)
- {
- super.paintComponent(page);
- int lightOn = currentState % NUM_LIGHTS;
- setBackground(Color.white);
- page.setColor(Color.lightGray);
- page.fillRect(X, Y, WIDTH, HEIGHT);
- // add code to determine the light to turn on and turn on the
- //light
- if (lightOn == 0)
- {
- page.setColor(Color.red);
- page.fillOval(X + X_OFFSET, Y + Y_OFFSET, DIAMETER, DIAMETER);
- page.setColor(Color.darkGray);
- page.fillOval(X + X_OFFSET, Y + (2 * Y_OFFSET) + DIAMETER,
- DIAMETER, DIAMETER);
- page.fillOval(X + X_OFFSET, Y + (3 * Y_OFFSET) + (2 * DIAMETER),
- DIAMETER, DIAMETER);
- }
- if (lightOn == 1)
- {
- page.setColor(Color.green);
- page.fillOval(X + X_OFFSET, Y + (3 * Y_OFFSET) + (2 * DIAMETER),
- DIAMETER, DIAMETER);
- page.setColor(Color.darkGray);
- page.fillOval(X + X_OFFSET, Y + Y_OFFSET, DIAMETER, DIAMETER);
- page.fillOval(X + X_OFFSET, Y + (2 * Y_OFFSET) + DIAMETER,
- DIAMETER, DIAMETER);
- }
- if (lightOn == 2)
- {
- page.setColor(Color.yellow);
- page.fillOval(X + X_OFFSET, Y + (2 * Y_OFFSET) + DIAMETER,
- DIAMETER, DIAMETER);
- page.setColor(Color.darkGray);
- page.fillOval(X + X_OFFSET, Y + Y_OFFSET, DIAMETER, DIAMETER);
- page.fillOval(X + X_OFFSET, Y + (3 * Y_OFFSET) + (2 * DIAMETER),
- DIAMETER, DIAMETER);
- }
- }
- public void change()
- {
- currentState++;
- repaint();
- }
- }
- //**********************************************************************************
- //**********************************************************************************
- //**********************************************************************************
Add Comment
Please, Sign In to add comment