Foros del Web » Programación para mayores de 30 ;) » Java »

Thread java

Estas en el tema de Thread java en el foro de Java en Foros del Web. Buenas, Estoy haciendo un ejercicio para el cole en el que me piden que haga una carrera de coches y cada coche se estara manejando ...
  #1 (permalink)  
Antiguo 03/03/2012, 05:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años, 1 mes
Puntos: 2
Thread java

Buenas,

Estoy haciendo un ejercicio para el cole en el que me piden que haga una carrera de coches y cada coche se estara manejando por hilos diferentes con prioridad de hilos aleatoria.
Al hacerlo me no me funciona bien el movimiento de los coches ta que solo se mueve un coche y el resto no.

codigo:



new Automovil("coche1");
new Automovil("coche2");
new Automovil("coche3");


class Automovil extends cars implements Runnable {

int i = 100;
int k = 0;

Thread t;
int sleept = 1000;
String car;
int num;

public Automovil(String car, int num){

this.car = car;
this.num = num;
t = new Thread(this);

t.setPriority(t.getPriority() + 1);

t.start();

}


public void run() {

while(k<i){
try {

t.sleep(sleept);
if(this.car.equals("coche1")){

Dimension size = imagen1.getPreferredSize();
imagen1.setBounds(k, 40,
size.width, size.height);

System.out.println(this.car + "Posicion " + k);


}else if(this.car.equals("coche2")){

Dimension size = imagen2.getPreferredSize();
imagen2.setBounds(k, 80,
size.width, size.height);

System.out.println(this.car + "Posicion " + k);

}else if(this.car.equals("coche3")){

Dimension size = imagen3.getPreferredSize();
imagen3.setBounds(k, 120,
size.width, size.height);

System.out.println(this.car + "Posicion " + k);

}


k++;
} catch (InterruptedException ex) {
Logger.getLogger(Automovil.class.getName()).log(Le vel.SEVERE, null, ex);
}

}


}


}


la imagen no se mueve del primer coche y segundo pero tercero si aunque el print de la posicion de cada coche si que se hace.

a que es debido ??

Saludos
  #2 (permalink)  
Antiguo 03/03/2012, 09:12
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Thread java

alguna idea??
  #3 (permalink)  
Antiguo 03/03/2012, 15:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Thread java

Revisando el código no veo nada raro, de hecho el que el System.out lo haga bien parece indicar que el código que has puesto funciona correctamente.

Quizás el problema esté en cómo has añadido las imágenes a .... ¿un panel? ¿una ventana?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 04/03/2012, 16:45
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Thread java

es un frame y las imagenes se agregan en jlabel.

saludos
  #5 (permalink)  
Antiguo 05/03/2012, 08:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Thread java

llama a repaint() o updateUI() después de mover cada una de las imágenes.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 07/03/2012, 15:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Thread java

Buenas,

le agrege el repaint() y nada.

if(this.car.equals("coche1")){

size = imagen1.getPreferredSize();
imagen1.setBounds(k, 40,
size.width, size.height);
repaint();
System.out.println(this.car + "Posicion " + k);


}else if(this.car.equals("coche2")){

size = imagen2.getPreferredSize();
imagen2.setBounds(k, 80,
size.width, size.height);
repaint();
System.out.println(this.car + "Posicion " + k);

}else if(this.car.equals("coche3")){

size = imagen3.getPreferredSize();
imagen3.setBounds(k, 120,
size.width, size.height);
repaint();
System.out.println(this.car + "Posicion " + k);

}

el update.. no me funciono.

saludos y gracias

Etiquetas: string, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:51.