J'ai un objet simple qui s'étend JPanel
, lorsque la méthode update()
est appelée sur cet objet, cela signifiait ajouter quelques étiquettes au panneau, puis repeindre. Toutefois, les étiquettes ne se présentent pas après la méthode de mise à jour est appelée, ci-dessous est le code de mise à jour:Swing JPanel ne pas repeindre
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();
}
des idées?
Merci
EDIT
résolu:
Il se trouve que le HoleCardsPanel
n'a pas été Rajouté à sa structure mère correctement. Une fois que cela a été corrigé l'ajout de nouveaux travaux de JLabel
bien. J'ai aussi:
- ajouté l'appel à la méthode
update()
au fil de l'envoi d'événement à l'aideSwingUtillities.invokeLater
- dû appeler
validate()
du composant supérieur (dans ce cas, leJFrame
) comme Devon_C_Miller suggests in his answer.
oui j'ai essayé cela, mais pas de chance :((mais je ne l'ai pas downvote) – Aly
Ok. Personnellement, je suis en désaccord avec le downvote Les gens oublient généralement des choses simples comme ceci et cela peut résoudre le problème de quelqu'un d'autre –
Je suis d'accord, donc je vais upvote pour l'annuler – Aly