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
Ir a la versión completa