es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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();
}
“`

Tags:  , , , ,

Answer

  1. Avatar for 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 es Spielfeld y qué significa su inicialización null en el contexto del tablero de ajedrez.

    Otra cosa a considerar es que el método createMap recibe un objeto GameEnvironment, 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 objetos Spielfeld al GameEnvironment 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.

Comments are closed.