• Domingo 17 de Noviembre de 2024, 23:00

Autor Tema:  Problem con tablero de ajedrez hecho con GridLayout y JPanel  (Leído 5063 veces)

doliyubidi

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problem con tablero de ajedrez hecho con GridLayout y JPanel
« en: Viernes 2 de Julio de 2010, 04:07 »
0
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
  1.  
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. public class tablero1 extends JFrame
  7. {
  8.     private Container contenedor;
  9.     private JPanel[][] Cuadro;
  10.     public tablero1()
  11.     {
  12.         contenedor=getContentPane();
  13.         contenedor.setLayout(new GridLayout(8,8));
  14.         setSize(600,600);
  15.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  16.         pintarCuadros();
  17.     }
  18.     public void pintarCuadros()
  19.     {
  20.         Cuadro=new JPanel[8][8];
  21.         for(int x=0;x<8;x++)
  22.         {
  23.             for(int y=0;y<8;y++)
  24.             {
  25.                 if(x%2==0)
  26.                 {
  27.                     if(y%2!=0)
  28.                     {
  29.                     Cuadro[x][y]=new JPanel();
  30.                     Cuadro[x][y].setBackground(Color.BLACK);
  31.                     contenedor.add(Cuadro[x][y]);
  32.  
  33.                     }
  34.                     else
  35.                     {
  36.                     Cuadro[x][y]=new JPanel();
  37.                     Cuadro[x][y].setBackground(Color.WHITE);
  38.                     contenedor.add(Cuadro[x][y]);
  39.  
  40.                     }
  41.  
  42.                 }
  43.                 else
  44.                 {
  45.                     if(y%2==0)
  46.                     {
  47.                     Cuadro[x][y]=new JPanel();
  48.                     Cuadro[x][y].setBackground(Color.BLACK);
  49.                     contenedor.add(Cuadro[x][y]);
  50.  
  51.                     }
  52.                     else
  53.                     {
  54.                     Cuadro[x][y]=new JPanel();
  55.                     Cuadro[x][y].setBackground(Color.WHITE);
  56.                     contenedor.add(Cuadro[x][y]);
  57.  
  58.                     }
  59.                 }
  60.             }
  61.         }
  62.     }
  63. }
  64.  
  65.  

Esta es la clase principal que instancia al JFrame:
Código: Java
  1.  
  2. public class test
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         tablero1 gui= new tablero1();//pra probar con al otra clase, cambiar tablero1 por Tablero
  7.         gui.setVisible(true);
  8.     }
  9. }
  10.  
  11.  

Y esta  es la otra clase que hereda a JPanel( con la que pasa el problema)
Código: Java
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class cuadro extends JPanel
  5. {
  6.     private int Y;
  7.     private int X;
  8.     boolean ocupado;
  9.     private int pieza;
  10.     public cuadro(int x,int y)
  11.     {
  12.         this.setLayout(null);
  13.         X=x;
  14.         Y=y;
  15.     }
  16.     public int getX()
  17.     {
  18.         return X;
  19.     }
  20.     public int getY()
  21.     {
  22.         return Y;
  23.     }
  24.     public void setX(int x)
  25.     {
  26.         X=x;
  27.     }
  28.     public void setY(int y)
  29.     {
  30.         Y=y;
  31.     }
  32. }
  33.  
  34.  

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
  1.  
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6.  
  7. public class Tablero extends JFrame
  8. {
  9.     private Container contenedor;
  10.     private cuadro[][] Cuadro;
  11.     public Tablero()
  12.     {
  13.         this.setLayout(null);
  14.         contenedor=getContentPane();
  15.         contenedor.setLayout(new GridLayout(8,8));
  16.         setSize(600,600);
  17.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  18.         pintarCuadros();
  19.     }
  20.     public void pintarCuadros()
  21.     {
  22.         Cuadro=new cuadro[8][8];
  23.         for(int x=0;x<8;x++)
  24.         {
  25.             for(int y=0;y<8;y++)
  26.             {
  27.                 if(x%2==0)
  28.                 {
  29.                     if(y%2!=0)
  30.                     {
  31.                     Cuadro[x][y]=new cuadro(x,y);
  32.                     Cuadro[x][y].setBackground(Color.BLACK);
  33.                     contenedor.add(Cuadro[x][y]);
  34.  
  35.                     }
  36.                     else
  37.                     {
  38.                     Cuadro[x][y]=new cuadro(x,y);
  39.                     Cuadro[x][y].setBackground(Color.WHITE);
  40.                     contenedor.add(Cuadro[x][y]);
  41.  
  42.                     }
  43.  
  44.                 }
  45.                 else
  46.                 {
  47.                     if(y%2==0)
  48.                     {
  49.                     Cuadro[x][y]=new cuadro(x,y);
  50.                     Cuadro[x][y].setBackground(Color.BLACK);
  51.                     contenedor.add(Cuadro[x][y]);
  52.  
  53.                     }
  54.                     else
  55.                     {
  56.                     Cuadro[x][y]=new cuadro(x,y);
  57.                     Cuadro[x][y].setBackground(Color.WHITE);
  58.                     contenedor.add(Cuadro[x][y]);
  59.  
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.     }
  65. }
  66.  
  67.  

Les estaria muy agradecidos si me pudieran ayudar a encontrar cual es el problema que pasa con la clase Tablero. :good:

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Problem con tablero de ajedrez hecho con GridLayout y JPanel
« Respuesta #1 en: Viernes 2 de Julio de 2010, 16:27 »
0
Hola, bienvenido al foro.
Bueno acá sale bien.  :(
de pronto más explicación o una imagen
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

doliyubidi

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Problem con tablero de ajedrez hecho con GridLayout y JPanel
« Respuesta #2 en: Viernes 2 de Julio de 2010, 17:14 »
0
Cita de: "juez"
Hola, bienvenido al foro.
Bueno acá sale bien.  :(
de pronto más explicación o una imagen

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

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Problem con tablero de ajedrez hecho con GridLayout y JPanel
« Respuesta #3 en: Viernes 2 de Julio de 2010, 18:35 »
0
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
  1. public class cuadro extends JPanel
  2. {
  3.  
  4.     public cuadro(int x,int y)
  5.     {
  6.  
  7.         setLocation(x, y);
  8.  
  9.     }
  10.  
  11.    
  12. }
  13.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

doliyubidi

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Problem con tablero de ajedrez hecho con GridLayout y JPanel
« Respuesta #4 en: Viernes 2 de Julio de 2010, 18:44 »
0
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.