Hola, tengo un problema con una aplicacion que estamos desarrollando, la cual consiste en basicamente simular la circulacion de autos por calles usando hilos. Ya tenemos hechas las calles, osea el escenerio de la aplicacion. Para ello usamos una matriz de objetos donde cada posicion de la matriz tiene 4 atributos, ya que necesitamos saber el sentido de la calle, si la posicion esta ocupada, y determinar si es una calle o una pared. El cuarto atributo, y aqui es el problema, es un atributo de tipo JPanel ya que nuestra idea era tomar ese panel y en ese panel dibujar lo que seria el auto y despues ir moviendolo. Pero lo que pasa es que no podemos llevar esta idea al codigo. No sabemos como podemos hacer eso de tomar ese atributo JPanel de la matriz e ir moviendolo de manera de simular el movimiento. Esa es nuestra idea porque la verdad que ya no se nos ocurre nada mas para simular este movimiento..
Dejo el codigo de lo que tenemos..
//Clase donde esta la matriz
public class Interfaz {
private final int LARGO_IMAGENES = 20;
private final int ALTURA_IMAGENES = 20;
JPanel uno = new JPanel();
JPanel dos = new JPanel();
JPanel tre = new JPanel();
JPanel cua = new JPanel();
JPanel cin = new JPanel();
Pixel x = new Pixel ("x",0,"9",cin);
Pixel a = new Pixel ("c",1,null,cua); // calle abajo
Pixel b = new Pixel ("c",2,null,tre); //calle arriba
Pixel c = new Pixel ("c",3,null,dos); // calle derecha
Pixel d = new Pixel ("c",4,null,uno); // calle izquierda
public Pixel InterfazActual[][] = {
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{c,c,a,c,c,c,c,a,c,c,c,c,a,c,c,c,c,a,c,c},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{c,c,a,c,c,c,c,a,c,c,c,c,a,c,c,c,c,a,c,c},
{d,d,a,d,d,d,d,a,d,d,d,d,a,d,d,d,d,a,d,d},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{c,c,a,c,c,c,c,a,c,c,c,c,a,c,c,c,c,a,c,c},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
{c,c,a,c,c,c,c,a,c,c,c,c,a,c,c,c,c,a,c,c},
{d,d,a,d,d,d,d,a,d,d,d,d,a,d,d,d,d,a,d,d},
{x,x,a,x,x,x,x,a,x,x,x,x,a,x,x,x,x,a,x,x},
};
public String DeolverCodigoImagenMatriz(int Fila, int Columna){return InterfazActual[Fila][Columna].getTipo();}
public int DevolverLargoImagenes(){return LARGO_IMAGENES;}
public int DevolverAlturaImagenes(){return ALTURA_IMAGENES;}
//Clase pixel que contiene los atributos de cada posicion de la matriz
public class Pixel {
private String tipo;
private Integer sentido;
private String contiene;
private JPanel panel;
public Pixel(String tipo, Integer sentido, String contiene, JPanel panel) {
this.tipo = tipo;
this.sentido = sentido;
this.contiene = contiene;
this.panel = panel;
}
public JPanel getPanel() {
return panel;
}
public void setPanel(JPanel panel) {
this.panel = panel;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public Integer getSentido() {
return sentido;
}
public void setSentido(Integer sentido) {
this.sentido = sentido;
}
public String getContiene() {
return contiene;
}
public void setContiene(String contiene) {
this.contiene = contiene;
}
}
//Clase que genera la matriz grafica.. Aqui llamada laberinto
public class Entorno extends javax.swing.JFrame implements Runnable {
/**
* Creates new form Entorno
*/
public Entorno() {
initComponents();
GenerarLaberintoGrafico();
}
private Interfaz LaberintoVirtual = new Interfaz();
private JLabel[][] LaberintoGrafico = new JLabel[20][20];
private void GenerarLaberintoGrafico() {
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 20; j++) {
LaberintoGrafico[j] = new JLabel();
add(LaberintoGrafico[j]);
LaberintoGrafico[j].setIcon(new ImageIcon(LaberintoVirtual.DeolverCodigoImagenMatriz(i, j) + ".gif"));
System.out.println(LaberintoVirtual.DeolverCodigoImagenMatriz(i, j));
System.out.println(i);
System.out.println(j);
}
}
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 20; j++) {
LaberintoGrafico[j].setBounds(i * LaberintoVirtual.DevolverLargoImagenes(), j * LaberintoVirtual.DevolverAlturaImagenes(), LaberintoVirtual.DevolverLargoImagenes(), LaberintoVirtual.DevolverAlturaImagenes());
LaberintoGrafico[j].validate();
}
}
}
Espero su ayuda.. Muchas gracias.