document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /**  
  2.   * Class untuk menampilkan traffic light  
  3.   */  
  4.  import java.awt.*;  
  5.  import javax.swing.*;  
  6.  import java.awt.event.*;  
  7.  public class TrafficLightPane extends JPanel {  
  8.    int tick = 1;  
  9.    int duration = 60;  
  10.    int state = 0;  
  11.    SignalPane green = new SignalPane(Color.green);  
  12.    SignalPane yellow = new SignalPane(Color.yellow);  
  13.    SignalPane red = new SignalPane(Color.red);  
  14.    DigitPane timerDigit = new DigitPane();  
  15.    public TrafficLightPane(int s){  
  16.      duration = s;  
  17.      setLayout(new GridLayout(4,1));  
  18.      green.turnOn(false);  
  19.      yellow.turnOn(false);  
  20.      red.turnOn(true);  
  21.      timerDigit.setValue(duration);  
  22.      add(red);  
  23.      add(yellow);  
  24.      add(green);  
  25.      add(timerDigit);  
  26.      Timer timer = new Timer(1000, new ActionListener(){  
  27.        public void actionPerformed(ActionEvent e) {  
  28.          int timeRemaining = duration - tick;  
  29.          if (timeRemaining <= 0) {  
  30.            tick = 0;  
  31.            state++;  
  32.            changeSignalState(state);  
  33.          }  
  34.          timerDigit.setValue(duration - tick);  
  35.          tick++;  
  36.        }  
  37.      });  
  38.      timer.setRepeats(true);  
  39.      timer.setCoalesce(true);  
  40.      timer.start();  
  41.    }  
  42.    //function u/ mengubah integer menjadi boolean  
  43.    private boolean changeToBool(int state){  
  44.      if (state % 3 > 0 ){  
  45.        return false;  
  46.      } else {  
  47.        return true;  
  48.      }  
  49.    }  
  50.    // function untuk mengubah state (on/off) dari object Signal  
  51.    private void changeSignalState(int state){  
  52.      green.turnOn(changeToBool(state + 2));  
  53.      yellow.turnOn(changeToBool(state + 1));  
  54.      red.turnOn(changeToBool(state));  
  55.    }  
  56.    public void setDuration(int s){  
  57.      duration = s;  
  58.    }  
  59.  }
  60.  
  61.  
');