Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con GridLayout y JPanel

Estas en el tema de Problema con GridLayout y JPanel en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/07/2010, 20:26
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Sonrisa Problema con GridLayout y JPanel

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

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

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

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

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

Etiquetas: jpanel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:19.