У меня есть простой объект, который расширяет JPanel
, когда для этого объекта вызывается метод update()
, он подразумевает добавление некоторых меток на панель и затем перерисовку. Однако после вызова метода обновления метки не отображаются, ниже приведен код для обновления:
public void update(){
GridBagConstraints constraints = new GridBagConstraints();
if(cardsHidden){
for(int i = 0; i < 2; i++){
constraints.gridx = i;
constraints.gridy = 0;
JLabel card = new JLabel(PlayingCards.cardImages[PlayingCards.CARD_BACK_INDEX]);
add(card, constraints);
}
}
else{
Card[] holeCards = player.getHoleCards();
for(int i = 0; i < holeCards.length; i++){
constraints.gridx = i;
constraints.gridy = 0;
JLabel card = new JLabel(holeCards[i].getImageIcon());
add(card, constraints);
}
}
validate();
repaint();
}
есть идеи?
Спасибо
EDIT
решена:
Оказывается, что HoleCardsPanel
не добавлялся в родительский фрейм должным образом. Как только это было исправлено, добавление новых JLabel
работает нормально. Я также:
- добавил вызов метода
update()
в поток отправки событий, используя SwingUtillities.invokeLater
- пришлось вызвать
validate()
из самого верхнего компонента (в данном случае JFrame
), как предлагает Devon_C_Miller в своем ответе .