我有一个简单的对象 extends 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();
}
有任何想法吗?
谢谢
编辑
解决了:
事实证明,HoleCardsPanel
没有正确添加到其父框架。一旦解决了这个问题,添加 new JLabel
s 就可以了。我也:
- 使用方法将调用添加
update()
到事件调度线程SwingUtillities.invokeLater
- 正如 Devon_C_Miller在他的回答中所建议的那样,必须
validate()
从最上面的组件(在本例中为)调用。JFrame