Buenas, estoy tratando de hacer un juego de ajedrez, y lo primero que hago es inicializar el tablero, al principio lo hacia con arreglo de JPanel, pero luego pense hacerlo con un arreglo de una clase que hereda a JPanel, bueno la cuestion es que antes, si me salia todo el cuadro completo del ajedrez cuando usaba el arreglo de JPanel, pero cuando lo cambie por la otra clase:"cuadro", todos los paneles me salen sobrepuestos.
Esta es la clase original, la que al compilar si me muestra el tablero completo.
Código JAVA:
Ver originalimport java.awt.*;
import java.awt.event.*;
import javax.swing.*;
*
public class tablero1
extends JFrame {
* * private JPanel[][] Cuadro
; * * public tablero1()
* * {
* * * * contenedor=getContentPane();
* * * * contenedor.
setLayout(new GridLayout(8,
8)); * * * * setSize(600,600);
* * * * setDefaultCloseOperation(EXIT_ON_CLOSE);
* * * * pintarCuadros();
* * }
* * public void pintarCuadros()
* * {
* * * * Cuadro
=new JPanel[8][8]; * * * * for(int x=0;x<8;x++)
* * * * {
* * * * * * for(int y=0;y<8;y++)
* * * * * * {
* * * * * * * * if(x%2==0)
* * * * * * * * {
* * * * * * * * * * if(y%2!=0)
* * * * * * * * * * {
* * * * * * * * * * Cuadro
[x
][y
]=new JPanel(); * * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
BLACK); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * * * else
* * * * * * * * * * {
* * * * * * * * * * Cuadro
[x
][y
]=new JPanel(); * * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
WHITE); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
*
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * if(y%2==0)
* * * * * * * * * * {
* * * * * * * * * * Cuadro
[x
][y
]=new JPanel(); * * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
BLACK); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * * * else
* * * * * * * * * * {
* * * * * * * * * * Cuadro
[x
][y
]=new JPanel(); * * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
WHITE); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * }
* * * * * * }
* * * * }
* * }
}
Esta es la clase principal que instancia al JFrame:
Código JAVA:
Ver originalpublic class test
{
* * public static void main
(String[] args
) * * {
* * * * tablero1 gui= new tablero1();//para probar con al otra clase, cambiar
* * * * gui.setVisible(true); //tablero1 por Tablero
* * }
}
Y esta es la otra clase que hereda a JPanel( con la que pasa el problema)
Código JAVA:
Ver originalimport javax.swing.*;
import java.awt.*;
public class cuadro
extends JPanel {
* * private int Y;
* * private int X;
* * boolean ocupado;
* * private int pieza;
* * public cuadro(int x,int y)
* * {
* * * * this.setLayout(null);
* * * * X=x;
* * * * Y=y;
* * }
* * public int getX()
* * {
* * * * return X;
* * }
* * public int getY()
* * {
* * * * return Y;
* * }
* * public void setX(int x)
* * {
* * * * X=x;
* * }
* * public void setY(int y)
* * {
* * * * Y=y;
* * }
}
y Esta es la clase que usa a cuadro(la clase que hereda a JPanel.La que me muetra el tablero con un solo cuadro, superpuestos a los siguientes.
Código JAVA:
Ver originalimport java.awt.*;
import java.awt.event.*;
import javax.swing.*;
*
*
public class Tablero
extends JFrame {
* * private cuadro[][] Cuadro;
* * public Tablero()
* * {
* * * * this.setLayout(null);
* * * * contenedor=getContentPane();
* * * * contenedor.
setLayout(new GridLayout(8,
8)); * * * * setSize(600,600);
* * * * setDefaultCloseOperation(EXIT_ON_CLOSE);
* * * * pintarCuadros();
* * }
* * public void pintarCuadros()
* * {
* * * * Cuadro=new cuadro[8][8];
* * * * for(int x=0;x<8;x++)
* * * * {
* * * * * * for(int y=0;y<8;y++)
* * * * * * {
* * * * * * * * if(x%2==0)
* * * * * * * * {
* * * * * * * * * * if(y%2!=0)
* * * * * * * * * * {
* * * * * * * * * * Cuadro[x][y]=new cuadro(x,y);
* * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
BLACK); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * * * else
* * * * * * * * * * {
* * * * * * * * * * Cuadro[x][y]=new cuadro(x,y);
* * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
WHITE); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
*
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * if(y%2==0)
* * * * * * * * * * {
* * * * * * * * * * Cuadro[x][y]=new cuadro(x,y);
* * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
BLACK); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * * * else
* * * * * * * * * * {
* * * * * * * * * * Cuadro[x][y]=new cuadro(x,y);
* * * * * * * * * * Cuadro
[x
][y
].
setBackground(Color.
WHITE); * * * * * * * * * * contenedor.add(Cuadro[x][y]);
*
* * * * * * * * * * }
* * * * * * * * }
* * * * * * }
* * * * }
* * }
}
Les estaria muy agradecidos si me pudieran ayudar a encontrar cual es el problema que pasa con la clase Tablero.