所以现在我正在学习如何在java中编写GUI代码。我试图做的是为纸牌游戏的玩家制作一个GUI,显示他们现在手中的名字,图标和牌数。然而,我遇到了一个问题,它不能像我预期的那样工作,我认为它可能在外部JPanel中添加13个相同的面板。以下是代码,谢谢!:
public JPanel createNested(int i) {
ImageIcon image;
JPanel outer = new JPanel(new GridLayout(1,14));
JPanel inner = new JPanel();
JPanel deck = new JPanel();
JLabel cards = new JLabel(cardBackImage);
inner.setLayout(new BoxLayout(inner, BoxLayout.Y_AXIS));
JLabel name = new JLabel("Player" + i);
image = avatars[i];
JLabel icon = new JLabel(avatars[i]);
outer.setBackground(Color.green);
inner.setBackground(Color.green);
deck.setBackground(Color.green);
deck.add(cards);
inner.add(name);
inner.add(icon);
outer.add(inner);
for(int k=0;k<13;k++){
outer.add(deck);
}
return outer;
}
我的期望: [名称&安培;图标] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡]
我所看到的: [名称&安培;图标] ............................................. ................................ [卡]
(点代表空白)
答案 0 :(得分:2)
您无法多次添加一个JPanel实例。您应该为每个套牌创建一个新的JPanel:
for(int k=0;k<13;k++){
JPanel deck = new JPanel();
JLabel cards = new JLabel(cardBackImage);
deck.setBackground(Color.green);
deck.add(cards);
outer.add(deck);
}