/**
* Write a description of class PanelLampuLaluLintas here.
* Merupakan Class untuk menampilkan lampu lalu lintas
* @Ghifari Astaudi\' Ukumullah
* @19 Oktober 2020
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class PanelLampuLaluLintas extends JPanel {
int time_ = 20; // inisiasi waktu LampuLL
int tanda = 1;
int keadaan = 0;
//Pemanggilan Class LampuLL untuk tampilan warna rambu
LampuLL hijau = new LampuLL (Color.green);
LampuLL kuning = new LampuLL (Color.yellow);
LampuLL merah = new LampuLL (Color.red);
//Pemanggilan Class TestTimer
TestTimer waktu = new TestTimer();
public PanelLampuLaluLintas(int t){
time_ = t;
setLayout(new GridLayout(4,1));
//set lampu merah dulu
hijau.turnON(false);
kuning.turnON(false);
merah.turnON(true);
waktu.setValue (time_);
//menampilkan rambu lalu lintas
add(merah);
add(kuning);
add (hijau);
//menampilkan waktu
add (waktu);
Timer Timer1 = new Timer (1000, new ActionListener(){
@Override
public void actionPerformed (ActionEvent e){
int waktutersisa = time_ - tanda; // awal perhitungan mundur -1
if (waktutersisa <=0){
tanda = 0; //waktu habis
keadaan ++;
ubahrambu(keadaan);
}
waktu.setValue (time_ - tanda); // mengurangi waktu
tanda++;
}
});
Timer1.setRepeats(true);
Timer1.setCoalesce(true);
Timer1.start();
}
// untuk mengubah integer menjadi boolean
private boolean cekkeadaan(int state){
if (state %3 > 0){
return false;
}
else {
return true;
}
}
private void ubahrambu (int state){ //rubah rambu lalu lintas
hijau.turnON (cekkeadaan(keadaan+2));
kuning.turnON (cekkeadaan(keadaan+1));
merah.turnON (cekkeadaan(keadaan));
}
private void setDuration(int t){
time_ = t;
}
}