Tengo un objeto simple que se extiende JPanel
, cuando se llama al método update()
en este objeto, significaba agregar algunas etiquetas al panel y luego volver a pintar. Sin embargo, las etiquetas no se presenta después de que el método de actualización se llama, a continuación es el código para la actualización:Swing JPanel no volverá a pintar
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();
}
alguna idea?
Gracias
EDIT
resuelto:
Resulta que el HoleCardsPanel
no fue añadiendo a su marco padre adecuadamente. Una vez que se arregló, la adición de la nueva JLabel
s funciona bien. I también:
- añadido la llamada al método
update()
a la rosca de distribución de eventos usandoSwingUtillities.invokeLater
- tuvo que llamar
validate()
desde el componente superior (en este caso elJFrame
) como Devon_C_Miller suggests in his answer.
sí lo ha intentado esto pero no hubo suerte :((pero no me downvote) – Aly
Ok. Personalmente, no estoy de acuerdo con la votación negativa. La gente generalmente olvida cosas simples como esta y esto puede resolver el problema de otra persona. –
Acepto, por lo tanto, votaré para cancelarlo – Aly