Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2009, 16:38
cyberexplorador
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Problema al mover JLabels con Hilos

Hola. Me podrían ayudar.
He estado haciendo una simulación de carrera de caballos y los caballos son Labels. Cuando uso Label se mueven poco a poco hasta llegar el fin. El problema es que necesito usar JLabel ya que solo ellos permiten poner imagen de fondo, pero al moverlos con los hilos no se mueven poco a poco sino que aparecen en el objetivo.

Para hacerme entender mejor copiaré el código.
Primero debo especificar que tengo 5 labels llamados:
  1. lblCaballo1
  2. lblCaballo2
  3. lblCaballo3
  4. lblCaballo4
  5. lblCaballo5

El siguiente código va dentro de un botón llamado btnJugar

Código:
btnJugar.setEnabled(false);
    for(int i=0; i<=130; i++){
            int x = lblCaballo1.getX();
	    int y = lblCaballo1.getY();
	    
	    int x2 = lblCaballo2.getX();
	    int y2 = lblCaballo2.getY();
	    
	    int x3 = lblCaballo3.getX();
	    int y3 = lblCaballo3.getY();
            
            int x4 = lblCaballo4.getX();
	    int y4 = lblCaballo4.getY();
            
            int x5 = lblCaballo5.getX();
	    int y5 = lblCaballo5.getY();
            
    	
	    /*int valX1 = o.cab1;
	    int valX2 = o.cab2;
	    int valX3 = o.cab3;*/
	    int cab1 = (int)(Math.random()*10);
	    int cab2 = (int)(Math.random()*10);
	    int cab3 = (int)(Math.random()*10);
            int cab4 = (int)(Math.random()*10);
            int cab5 = (int)(Math.random()*10);
	    
	    //lblCaballo4.setText(Integer.toString(i));
	    //lblCaballo5.setText(Integer.toString(cab2));
	    //lblCaballo6.setText(Integer.toString(cab3));
	    
	        try {
		            Thread.sleep(100);
                            int incre1 = x + cab1;
                            int incre2 = x2 + cab2;
                            int incre3 = x3 + cab3;
                            int incre4 = x4 + cab4;
                            int incre5 = x4 + cab5;
                            
                            
                            lblCaballo1.setLocation(incre1, y);                            
		            lblCaballo2.setLocation(incre2, y2);
		            lblCaballo3.setLocation(incre3, y3);
                            lblCaballo4.setLocation(incre4, y4);
                            lblCaballo5.setLocation(incre5, y5);
                            
                            if(incre1>incre2 && incre1>incre3 && incre1>incre4 && incre1>incre5) {
                                lblGanador.setText(lblCaballo1.getText());
                            }
                            
                            if(incre2>incre1 && incre2>incre3 && incre2>incre4 && incre2>incre5) {
                                lblGanador.setText(lblCaballo2.getText());
                            }
                            
                            if(incre3>incre1 && incre3>incre2 && incre3>incre4 && incre3>incre5) {
                                lblGanador.setText(lblCaballo3.getText());
                            }
                            
                            if(incre4>incre1 && incre4>incre2 && incre4>incre3 && incre4>incre5) {
                                lblGanador.setText(lblCaballo4.getText());
                            }
                            
                            if(incre5>incre1 && incre5>incre2 && incre5>incre3 && incre5>incre4) {
                                lblGanador.setText(lblCaballo5.getText());
                            }
	        } catch (InterruptedException ex) {
	            System.out.println("Error: " + ex.getMessage());
	        }
    
	}
lblGanador es un label que va diciendo qué label va primero. El código funciona muy bien con Label. Pero no con JLabel que es lo que necesito para poder poner imágenes de caballos. No sé si me podría ayudar.

Gracias