Java GUI:JPanel添加多个相同的Panel

时间:2016-04-08 16:25:09

标签: java swing user-interface jpanel

所以现在我正在学习如何在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;
  }

我的期望: [名称&安培;图标] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡] [卡]

我所看到的: [名称&安培;图标] ............................................. ................................ [卡]

(点代表空白)

1 个答案:

答案 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);
}