(secondes question en quelques heures)Java Swing repeindre()
Kay donc je fais une variante d'échecs en java, je travaille mon programme de la console que je veux, mais maintenant je suis en train pour le convertir en une interface graphique swing tout en gardant les choses de la console intacte. Donc, jusqu'à maintenant, j'ai mon tableau de carrés avec des morceaux pour la console, et un tableau bidimensionnel de JPanels avec des morceaux pour l'interface graphique. Je ne l'ai pas mis en œuvre à déplacer les pièces dans l'interface graphique encore si je fais encore de la console, mais l'interface graphique réelle ne met pas à jour après que je l'ai déplacé un morceau ... même si elle le fait sur la console (désolé si cela prête à confusion).
L'interface se compose d'un constructeur qui appelle certaines méthodes drawBoard() et drawSidebar() et définit la taille, titres etcetc ... donc c'est ce que la principale méthode ressemble à:
public static void main(String args[]) {
ChessGUI GUI = new ChessGUI();
Board console = new Board();
do {
console.printBoard();
console.getScore();
console.getMove();
GUI.boardPanel.revalidate();
GUI.sidePanel.revalidate();
GUI.repaint();
} while (true);
}
et drawBoard () Incase cela fait une différence:
public void drawBoard() {
LayoutManager layout = new GridLayout(NUMBER_OF_ROWS, NUMBER_OF_COLS);
boardPanel.setLayout(layout);
boardPanel.setPreferredSize(new Dimension(200, 450));
chessBoard = new JPanel[NUMBER_OF_ROWS][NUMBER_OF_COLS];
for (int i = 0; i < NUMBER_OF_ROWS; i++) {
for (int j = 0; j < NUMBER_OF_COLS; j++) {
chessBoard[i][j] = new JPanel();
chessBoard[i][j].setBackground(getColor(i,j));
int index = i * 4 + j;
if (!(boardArray.chessBoard[index].square.isEmpty())) {
Piece piece = (Piece) boardArray.chessBoard[index].square.firstElement();
chessBoard[i][j].add(new JLabel(piece.toString()));
}
boardPanel.add(chessBoard[i][j]);
}
}
}
les repeindre et les méthodes revalider ne semblent pas appeler du tout, même si la console est mise à jour :(