Estou fazendo um projeto mas ainda estou muito novo em java e gostaria de uma ajuda: O projeto é simular threads, fazendo uma ferrovia que tem duas linhas férreas à esquerda e à direita chegando a uma linha comum, tipo uma ponte que une dois lados(Uma imagem de uma ferrovia é fornecida e nós temos inserir as bolinhas e fazê-las andar pela imagem, a imagem é como o exemplo a seguir: >-<). Os threads serão bolinhas coloridas simulando trens e tem dois semáforos, um em cada lado, cada lado tem que esperar a sua vez para atravessar a linha comum. Como eu posso movimentar as bolinhas? Da esquerda para a direita usamos bolinhas de cor azul e da direita para esquerda usamos a cor vermelha. E outra coisa: como eu acendo e apago o semáforo. Segue meu projeto. Agradeço desde já pela ajuda!!!
Classe Main
public class main
{
public static void main(String[] args) {
// TODO Auto-generated method stub
FrameSimulador frame = new FrameSimulador(“Simulador Ferroviário”);
frame. setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Classe FrameSimulador
public class FrameSimulador extends JFrame{
private static final long serialVersionUID = 3846863421641024113L;
public final int LARG_DEFAULT=800;
public final int ALT_DEFAULT=600;
private PainelSimulador ps;
public FrameSimulador(String nome) {
super(nome);
ps = new PainelSimulador();
ps.setLayout(null);
add(ps);
getContentPane().add(ps);
pack();
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension screenSize=tk.getScreenSize();
int sl=screenSize.width;
int sa=screenSize.height;
int x=sl/2-LARG_DEFAULT/2;
int y=sa/2-ALT_DEFAULT/2;
setBounds(x,y,LARG_DEFAULT,ALT_DEFAULT);
setVisible(true);
//setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Classe PainelSimulador
public class PainelSimulador extends JPanel{
private static final long serialVersionUID = 6441831869676108377L;
private Image i;
public PainelSimulador(){
try
{
i=ImageIO.read(new File("C:/Documents and Settings/Alvim Maurtas/Desktop/threads/2012-1-TF/imagem/Trem.jpg"));
}
catch(IOException e)
{
System.out.println(e.getMessage());
System.exit(1);
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d=(Graphics2D) g;
// Desenha ferrovia
g2d.drawImage(i, 0, 0, 800, 600, null);
// Desenha o círculo AZUL
Ellipse2D tremazul;
tremazul=new Ellipse2D.Double(40,258,15,15);
g2d.setPaint(Color.BLUE);
g2d.fill(tremazul);
// Desenha o círculo VERMELHO
Ellipse2D tremverm;
tremverm=new Ellipse2D.Double(745,355,15,15);
g2d.setPaint(Color.RED);
g2d.fill(tremverm);
// Desenha Sinal a Esquerda
Rectangle2D sinalleft=new
Rectangle2D.Double(110,205,25,40);
g2d.setPaint(Color.BLACK);
g2d.fill(sinalleft);
// Desenha circulos interna ao retângulo
Ellipse2D sredleft;
sredleft=new Ellipse2D.Double(114,208,15,15);
g2d.setPaint(Color.RED);
g2d.fill(sredleft);
Ellipse2D sgreenleft;
sgreenleft=new Ellipse2D.Double(114,225,15,15);
g2d.setPaint(Color.GREEN);
g2d.fill(sgreenleft);
// Desenha Sinal a Direita
Rectangle2D sinalright=new
Rectangle2D.Double(680,390,25,40);
g2d.setPaint(Color.BLACK);
g2d.fill(sinalright);
// Desenha circulos interna ao retângulo
Ellipse2D sredright;
sredright=new Ellipse2D.Double(684,393,15,15);
g2d.setPaint(Color.RED);
g2d.fill(sredright);
Ellipse2D sgreenright;
sgreenright=new Ellipse2D.Double(684,410,15,15);
g2d.setPaint(Color.GREEN);
g2d.fill(sgreenright);
}
}