document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4.  
  5.  
  6. public class TrafficLight extends JFrame{
  7.    
  8.       Signal green = new Signal(Color.green);
  9.       Signal yellow = new Signal(Color.yellow);
  10.       Signal red = new Signal(Color.red);
  11.       Waktu waktu = new Waktu();
  12.       Time time = new Time();
  13.       int tick = 1;  
  14.       int duration;  
  15.       int state = 0;  
  16.  
  17.     public TrafficLight(){
  18.        
  19.    
  20.         green.turnOn(false);
  21.         yellow.turnOn(false);
  22.         red.turnOn(true);
  23.  
  24.         JPanel trafficPanel = new JPanel(new GridLayout(4,1));
  25.         trafficPanel.add(red);
  26.         trafficPanel.add(yellow);
  27.         trafficPanel.add(green);
  28.         trafficPanel.add(waktu);
  29.  
  30.         getContentPane().add(trafficPanel);
  31.         pack();
  32.      
  33.         duration = time.Red();
  34.         Timer timer = new Timer(1000, new ActionListener(){  
  35.        @Override  
  36.        public void actionPerformed(ActionEvent e) {
  37.            
  38.          int timeRemaining = duration - tick;  
  39.          if (timeRemaining <= 0) {  
  40.            tick = 0;  
  41.            state++;  
  42.            changeSignalState(state);
  43.            changeTime(state);
  44.          }  
  45.          waktu.setValue(duration - tick);  
  46.          tick++;  
  47.        }  
  48.      });  
  49.      timer.setRepeats(true);  
  50.      timer.setCoalesce(true);  
  51.      timer.start();  
  52.     }
  53.  
  54.    private boolean changeToBool(int state){  
  55.      if (state % 3 > 0 ){  
  56.        return false;  
  57.      } else {  
  58.        return true;
  59.        
  60.      }  
  61.    }
  62.    
  63.    private void changeTime(int state){
  64.      if(state %3 == 0)
  65.      {
  66.        duration = time.Red();
  67.      }
  68.      if(state %3 == 1)
  69.      {
  70.        duration = time.Green();
  71.      }
  72.      if(state %3 == 2)
  73.      {
  74.        duration = time.Yellow();
  75.      }
  76.     }
  77.    
  78.     public static void main(String[] args){
  79.         TrafficLight trafficLight = new TrafficLight();      
  80.         trafficLight.setVisible(true);
  81.     }  
  82.    
  83.      private void changeSignalState(int state){  
  84.      green.turnOn(changeToBool(state + 2));  
  85.      yellow.turnOn(changeToBool(state + 1));  
  86.      red.turnOn(changeToBool(state));  
  87.    }
  88.    
  89. }  
');