2016-04-08 4 views
-1

Also gerade lerne ich, wie man die GUI in Java programmiert. Was ich versuchte, war, eine GUI für Spieler eines Kartenspiels zu erstellen, die ihren Namen, ihr Icon und die Anzahl der Karten in der Hand zeigt. Allerdings habe ich ein Problem, wo es nicht funktioniert, wie ich erwartet, wo ich vermutete, dass es möglicherweise 13 identische Panels innerhalb der äußeren JPanel hinzufügen konnte. Im Folgenden sind die Codes dank !:Java GUI: JPanel fügt mehrere identische Panels hinzu

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; 
    } 

was ich erwartet hatte: [Name & Symbol] [Karte] [Karte] [Karte] [Karte] [Karte] [Karte] [Karte] [Karte] [ Karte] [Karte] [Karte] [Karte] [Karte]

Was ich sehe: [Name & Symbol] ...................... .................................................. ..... [Karte]

(Die Punkte repräsentiert Leerzeichen)

Antwort

2

Sie können nicht hinzufügen o ne Instanz eines JPanels mehrmals. Sie sollten ein neues JPanel für jedes Deck wie folgt erstellen:

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