concurrencia - Ayuda!!!!!!!
Publicado por Hernan (2 intervenciones) el 31/07/2008 16:47:07
Hola gente estoy haciendo un trabajo practico para la facu, consiste en un juego de autos, pero tengo un gran problema. cuando quiero comenzar la carrera me tira excepciones y me parece que es en la concurrencia, y es un tema que no lo manejo para nada. primero lo probe por separado y funcionaba, pero despues cuando integre todo ( las ventanas con la presentacion del juego ) y ponia comenzar juego me tira este problema.
Le paso el codigo y el error que me tira haber si me pueden dar una mano.
Error:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
Codigo:
public CicloCarrera(Partida partida1, VistaAuto2 vista){
this.Controlador =(ControlDelTecladoJugador1) (SingletonContenedorControladores.getInstancia()).getControlador(ControlDelTecladoJugador1.class.getName());;
this.partida1 = partida1;
this.vista= vista;
}
//aca esta el problema
private void dibuja() throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
vista.paintImmediately(0, 0, ANCHO, ALTO);
}
});
}
public void cicloPrincipalJuego() {
long tiempoViejo = System.nanoTime();
while (true) {
long tiempoNuevo = System.nanoTime();
float dt = (tiempoNuevo - tiempoViejo) / 1000000000f;
tiempoViejo = tiempoNuevo;
this.Controlador.Move(dt);
try {
dibuja();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//this.carreraFinalizada = true;
this.vista.repaint();
}
}
}
Muchas gracias,
saludos
Le paso el codigo y el error que me tira haber si me pueden dar una mano.
Error:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
Codigo:
public CicloCarrera(Partida partida1, VistaAuto2 vista){
this.Controlador =(ControlDelTecladoJugador1) (SingletonContenedorControladores.getInstancia()).getControlador(ControlDelTecladoJugador1.class.getName());;
this.partida1 = partida1;
this.vista= vista;
}
//aca esta el problema
private void dibuja() throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
vista.paintImmediately(0, 0, ANCHO, ALTO);
}
});
}
public void cicloPrincipalJuego() {
long tiempoViejo = System.nanoTime();
while (true) {
long tiempoNuevo = System.nanoTime();
float dt = (tiempoNuevo - tiempoViejo) / 1000000000f;
tiempoViejo = tiempoNuevo;
this.Controlador.Move(dt);
try {
dibuja();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//this.carreraFinalizada = true;
this.vista.repaint();
}
}
}
Muchas gracias,
saludos
Valora esta pregunta


0