Classe JSemaforo realizzata in classe:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JComponent;
public class JSemaforo extends JComponent {
public final int ROSSO = 0, VERDE = 1, GIALLO = 2;
private boolean acceso = false;
private int stato = ROSSO;
public JSemaforo() {
this.setPreferredSize(new Dimension(50, 150));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRoundRect(0, 0, 50, 150, 10, 10);
if (acceso) {
switch (stato) {
case ROSSO:
g.setColor(Color.RED);
g.fillOval(5, 5, 40, 40);
break;
case VERDE:
g.setColor(Color.GREEN);
g.fillOval(5, 105, 40, 40);
break;
case GIALLO:
g.setColor(Color.YELLOW);
g.fillOval(5, 55, 40, 40);
break;
}
} else {
g.setColor(Color.YELLOW);
g.fillOval(5, 55, 40, 40);
}
}
public void successivo() {
stato++;
if (stato > GIALLO)
stato = ROSSO;
repaint();
}
public int getStato() {
return stato;
}
public void setStato(int stato) {
this.stato = stato;
}
public boolean isAcceso() {
return acceso;
}
public void setAcceso(boolean acceso) {
this.acceso = acceso;
}
}