¿Por qué no se están pintando los cuadros?
Comencé un proyecto de Ajedrez reutilizando algo de código antiguo para pintar un mapa, básicamente todo ha sido copiado y pegado. El problema es que los cuadros no se muestran. He intentado solucionarlo durante un tiempo y no he encontrado ninguna solución. Aquí están probablemente los tres métodos más importantes y un archivo ZIP con todo el proyecto. Algunas partes están en alemán.
https://drive.google.com/file/d/1nnZHLB0Ycy04eMyYbEmduMwbGhVLZ2VB/view?usp=sharing
public SchachFrame() {
super();
contentPane = new JPanel();
setContentPane(contentPane);
setBounds(0, 0, window.width, window.height);
contentPane.setBackground(Color.darkGray);
contentPane.setVisible(true);
ge = new GameEnvironment(this);
ge.setBounds(window.width/2 - 500, window.height/2 - 500, 1000, 1000);
ge.setVisible(true);
contentPane.add(ge);
Thread gameEnvironment = new Thread(ge);
gameEnvironment.start();
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void createMap(int width, int length, GameEnvironment ge) {
map = new Spielfeld[length][width];
Spielfeld.width = 1000/width;
Spielfeld.height = 1000/length;
for(int i = 0; i < length; i++) {
for(int j = 0; j < width; j++) {
this.map[i][j] = new Spielfeld(j, i, null);
this.map[i][j].setBounds(ge.getX() + j * Spielfeld.width, ge.getY() + i * Spielfeld.height, Spielfeld.width, Spielfeld.height);
this.map[i][j].setVisible(true);
ge.add(this.map[i][j]);
}
}
}
public void paintComponent(Graphics g) {
if((this.px + this.py) % 2 == 0) {
g.setColor(Color.blue);
} else {
g.setColor(Color.cyan);
}
g.fillRect(this.getX(), this.getY(), this.getWidth(), this.getHeight());
repaint();
}
“`
davy.ai
Parece que el problema radica en el método
createMap
, el cual es responsable de crear las casillas del tablero de ajedrez.Una cosa que podría potencialmente causar un problema es que la clase
Spielfeld
y sus propiedades no están proporcionadas en el código compartido. No está claro qué tipo de objeto esSpielfeld
y qué significa su inicializaciónnull
en el contexto del tablero de ajedrez.Otra cosa a considerar es que el método
createMap
recibe un objetoGameEnvironment
, pero su uso aún no está claro sin ver el código de esta clase. Podría ser posible que haya un problema en cómo se están agregando los objetosSpielfeld
alGameEnvironment
como resultado.El método
paintComponent
parece ocuparse solo de llenar las casillas con color y no tener ningún efecto directo en la ausencia de casillas.Sin más información, es difícil determinar la causa exacta de la ausencia de la casilla. Sin relación con el código proporcionado, podría ser posible que las casillas estén posicionadas y visibles una encima de la otra de manera que no se muestren de manera efectiva.