Так что в настоящее время я учу себя использовать GUI, и я решил вернуться к коду для игры Go Fish, которую я создал, и добавить к нему GUI. Для панели, которая содержит карты игрока CPU, она отображает заднюю часть некоторых игральных карт, чтобы указать размер руки процессора.
Всякий раз, когда происходит изменение размера руки процессора, вызывается мой метод updateComputerCards
для настройки количества карт, отображаемых на экране. Это делается путем вызова метода removeAll()
для моей панели, а затем происходит повторное добавление необходимого количества изображений карт.
Моя проблема, однако, заключается в том, что когда игра начинается впервые, и в руке ЦП обнаруживаются совпадения, метод работает, как предполагалось, и количество появляющихся карт уменьшается. Тем не менее, каждый раз, когда вызывается метод, в графическом интерфейсе ничего не меняется, несмотря на то, что у процессора есть карты разных размеров.
Через отладчик я вижу, что метод removeAll()
по какой-то причине не удаляет все компоненты на панели, даже если он успешно выполняется без проблем при первом вызове. Может ли кто-нибудь помочь мне здесь?
public void updateComputerCards(ArrayList<Integer> hand) {
labelPanel.removeAll();
for (int i = 0; i < hand.size(); i++) {
labelPanel.add(computerCardLabels.get(i));
labelPanel.add(b.createHorizontalStrut(10));
}
}