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