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());
}
}