Saludos estoy terminando una práctica que simula la vida de un safari en java, en él coexisten: plantas, gacelas y leones. Cada cierto tiempo de juego se reproducen o mueren si no han comido; lógicamente las gacelas se comen las plantas, los leones a las gacelas... las plantas no comen. El problema surge con un JPanel al que añado un GridLayout con el mismo tamaño de la matriz donde guardo la simulación del comportamiento de los bichos, llamo a éste método:
private void ponerLabel() {
int filas = 0, columnas = 0;
JPanel bicho;
filas = miControl.getNFilas();
columnas = miControl.getNColumnas();
for (int i=0;i<filas;i++) {
for (int j=0;j<columnas;j++) {
bicho = new JPanel();
bicho.setSize(5,5);
bicho.setBackground(Color.BLACK);
this.panelSimulacion.add(bicho);
}
}
}
Con él cada celda del GridLayout lo relleno con un panel al que le pongo de color negro, así comienzo a recorrer con un la matriz y por cada posición llamo a este método, que recibe la fila, columna y como opción el bicho que ha de pintar (1 plantas, 2 gacelas, 3 leones, default ninguno):
private void pintaBicho (int fila, int columna, int opcion) {
switch (opcion) {
case 1:
this.panelSimulacion.getComponentAt(fila, columna).setBackground(Color.GREEN);
break;
case 2:
this.panelSimulacion.getComponentAt(fila, columna).setBackground(Color.BLUE);
break;
case 3:
this.panelSimulacion.getComponentAt(fila, columna).setBackground(Color.RED);
break;
default:
this.panelSimulacion.getComponentAt(fila, columna).setBackground(Color.WHITE);
}
}
El problema es que sólo me pinta un recuadro blanco en la primera celda del panel, sin embargo tengo etiquetas con contadores totales de plantas, gacelas, leones y turnos actualizados cada turno y se puede comprobar que el modelo de datos sí que funciona, además lo he comprobado con el depurador y el modelo funciona perfectamente, por tanto el error está en la clase gráfica, pero por más que lo he probado, cambiado e intentado no consigo que gráficamente se comporte como debe.
Alguien me puede ayudar??
Un saludo y muchas gracias.