Programación General > Java

 Problem con tablero de ajedrez hecho con GridLayout y JPanel

(1/1)

doliyubidi:
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 --- import java.awt.*;import java.awt.event.*;import javax.swing.*; public class tablero1 extends JFrame{    private Container contenedor;    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 --- public class test{    public static void main(String[] args)    {        tablero1 gui= new tablero1();//pra probar con al otra clase, cambiar tablero1 por Tablero        gui.setVisible(true);    }}  
Y esta  es la otra clase que hereda a JPanel( con la que pasa el problema)

--- Código: Java --- import 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 --- import java.awt.*;import java.awt.event.*;import javax.swing.*;  public class Tablero extends JFrame{    private Container contenedor;    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. :good:

arielb:
Hola, bienvenido al foro.
Bueno acá sale bien.  :(
de pronto más explicación o una imagen

doliyubidi:

--- Cita de: "juez" ---Hola, bienvenido al foro.
Bueno acá sale bien.  :(
de pronto más explicación o una imagen
--- Fin de la cita ---

No me permite adjuntar enlaces...: :(
Bueno talvez te sale bien, porq en la clase test no lo has modificado, cambiando Tablero, por tablero1, alli es cuando sucede el problema y salen los JPanel sobrepuestos.

arielb:
tienes razón, y lo peor de todo que no había leído el comentario que le pusiste  :wacko:

bueno intenta con esto, creo que es lo que buscas.


--- Código: Java ---public class cuadro extends JPanel{      public cuadro(int x,int y)    {         setLocation(x, y);     }     } 

doliyubidi:
Ola gracias, por la rapida respuestra, pero porsiacaso esos x e y que estoy mandando al cosntructor no tienen nada que ver con las coordenandas en pixeles, sino que son las coordenadas con respecto al tablero, que pueden ir de [0,7] para X y de [0,7] para Y.

Navegación

[0] Índice de Mensajes

Ir a la versión completa