( второй вопрос за несколько часов )
Кей, я делаю шахматный вариант в java, у меня консольная программа работает так, как я хочу, но сейчас я пытаюсь преобразовать ее в графический интерфейс Swing, в то же время сохраняя консоль без изменений. Итак, до сих пор у меня есть массив квадратов с фигурами для консоли и двумерный массив JPanels с фигурами для графического интерфейса. Я еще не реализовал перемещение частей в графическом интерфейсе, поэтому я все еще делаю это с консоли, но фактический графический интерфейс не обновляется после перемещения части ... даже если это происходит на консоли (извините, если это сбивает с толку).
Графический интерфейс пользователя состоит из конструктора, который вызывает некоторые методы drawBoard () и drawSidebar () и устанавливает размеры, заголовки и так далее ... вот как выглядит основной метод:
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);
}
и drawBoard (), если это имеет значение:
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]);
}
}
}
методы перерисовки и повторной проверки, похоже, вообще не вызывают, хотя консоль обновляется: (