Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import javax.swing.*;
- import java.awt.event.*;
- public class TrafficLight extends JFrame{
- Signal green = new Signal(Color.green);
- Signal yellow = new Signal(Color.yellow);
- Signal red = new Signal(Color.red);
- Waktu waktu = new Waktu();
- Time time = new Time();
- int tick = 1;
- int duration;
- int state = 0;
- public TrafficLight(){
- green.turnOn(false);
- yellow.turnOn(false);
- red.turnOn(true);
- JPanel trafficPanel = new JPanel(new GridLayout(4,1));
- trafficPanel.add(red);
- trafficPanel.add(yellow);
- trafficPanel.add(green);
- trafficPanel.add(waktu);
- getContentPane().add(trafficPanel);
- pack();
- duration = time.Red();
- Timer timer = new Timer(1000, new ActionListener(){
- @Override
- public void actionPerformed(ActionEvent e) {
- int timeRemaining = duration - tick;
- if (timeRemaining <= 0) {
- tick = 0;
- state++;
- changeSignalState(state);
- changeTime(state);
- }
- waktu.setValue(duration - tick);
- tick++;
- }
- });
- timer.setRepeats(true);
- timer.setCoalesce(true);
- timer.start();
- }
- private boolean changeToBool(int state){
- if (state % 3 > 0 ){
- return false;
- } else {
- return true;
- }
- }
- private void changeTime(int state){
- if(state %3 == 0)
- {
- duration = time.Red();
- }
- if(state %3 == 1)
- {
- duration = time.Green();
- }
- if(state %3 == 2)
- {
- duration = time.Yellow();
- }
- }
- public static void main(String[] args){
- TrafficLight trafficLight = new TrafficLight();
- trafficLight.setVisible(true);
- }
- private void changeSignalState(int state){
- green.turnOn(changeToBool(state + 2));
- yellow.turnOn(changeToBool(state + 1));
- red.turnOn(changeToBool(state));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment