У меня проблемы с получением JLabels в двумерном массиве для обновления во время выполнения.
Программа, над которой я работаю, является вариантом Connect Four.Я создаю 2D-массив JLabels, который по умолчанию использует ImageIcon, содержащий изображение пустого слота.Игроки 1 и 2 выбирают свои цвета, и на ходу игрок может щелкнуть, чтобы бросить фигуру в столб (гравитация заставляет фигуру упасть на дно или пока она не упадет на другую фигуру).
IЯ довольно уверен, что мой метод addToColumn работает нормально.Моя единственная проблема в том, что я не могу заставить JLabels обновиться.Вот метод, над которым я работаю:
p1, p2 и current являются объектами Player.grid [] [] - это двумерный массив целых чисел, установленный в 0, 1 или 2, чтобы легче отслеживать, кому принадлежат какие плитки.tile [] [] - это мой 2D-массив JLabels.
public void addToColumn(int column) { // drop a tile in the specified column
int i = 0;
while (grid[column][5-i] != 0) i++; // move upward through the 6 rows of tiles
// until we find an empty one
if (current == p1) grid[column][5-i] = 1; // update to the current player's value
else grid[column][5-i] = 2;
tiles[column][5-i] = new JLabel(findColorIcon(current.getColor()));
tiles[column][5-i].setIcon(findColorIcon(current.getColor()));
repaint();
теперь с этими двумя последними строками, меняющими JLabel в тайлах [] [], очевидно, мне не нужны оба, не знаю, какой путьлучше ... это лишь часть того, что я пробовал, но безрезультатно.(мой метод getColor () возвращает Color, а findColorIcon (Color c) возвращает соответствующий JLabel с этим цветом плитки).
и да, я также добавил в свой метод paintComponent:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
Я застрял на этом некоторое время и чувствую, что упускаю что-то очевидное.какие-либо предложения?