Перекраска в Java Swing с контейнерами - PullRequest
0 голосов
/ 02 марта 2011

У меня есть простая сетка, которая помещает квадрат везде, где пользователь нажимает. Сетка и доступ к панелям хранятся в объекте «Игра».

Это работает:

private void buildClicked(int x, int y) {
    panel.repaint();
    game.buy(x, y);
}

Это не вызывает перерисовку:

private void buildClicked(int x, int y) {
    game.getPanel().repaint();
    game.buy(x, y);
}

Если я сделаю панель общедоступной переменной Game, это тоже не сработает:

private void buildClicked(int x, int y) {
    game.panel.repaint();
    game.buy(x, y);
}

«getPanel» просто возвращает тот же пользовательский объект панели, на который ссылается объект «панели» верхнего элемента.

Я бы хотел разместить панель в обёртке объекта Game. Аналогичным образом, вызов функции перерисовки внутри функции «buy» не работает.

Почему функция «перекрасить» ведет себя по-разному в приведенных выше примерах?

1 Ответ

1 голос
/ 02 марта 2011

Комментарии под моим вопросом были совершенно правильными.Я объявил панель отдельно в объекте Game и в самом окне.Еще один случай попадания в новый материал и упущения чего-то простого.Спасибо!

...