# Grid Layout + Array



## Pete2000 (17. Sep 2005)

Hallo,

ich hab ein Problem mit dem Grid Layout. Wenn ich Array vom Typ JLabel habe und die Element darin
dann in einer For Schleife 2x auf ein Panel adden will, dann added er das Label nur einmal?!
Hier der Code:


```
p.setLayout(new GridLayout(anzPaar,5));
for(int i=0;i<anzPaar;i++){
			
			p.add(lables[i]);
                        p.add(lables[i]);
			
		}
```

Wie gesagt wird labels_ nur einmal geaddet.

Weiß jemand Rat?_


----------



## 8ull23y3 (17. Sep 2005)

Hast du vielleicht noch ein bisschen mehr Code? Wäre denke ich hilfreich.
Ansonsten.


```
import java.awt.*;

import javax.swing.*;

public class JLabelArray extends JFrame
{
  private JLabel[] jlabels = new JLabel[20];
  public JLabelArray()
  {
    getContentPane().setLayout(new GridLayout(jlabels.length/2, jlabels.length/2));
    for(int i=0; i<jlabels.length; i++)
    {
      jlabels[i] = new JLabel("JLabel"+i);
      getContentPane().add(jlabels[i]);
    }
    getContentPane().setSize(400,300);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
  }
  public static void main(String[] args)
  {
    new JLabelArray();
  }
}
```


----------



## Pete2000 (17. Sep 2005)

Es handelt sich dabei um einen Klasse die einen JPanel übergeben bekommt, im Konstruktor dieser Klasse
werden die einzelnen Elemente wie das Array von Labels hinzugefügt.
In einer anderen Klasse wird dann dieses Panel in eine Oberfläche eingefügt.

Hier wird ein Objekt instanziert.

```
new Paarungen(parPanels[1],1);
```


Hier ist der Konstruktor des Objekts:

```
public Paarungen(JPanel p,int nr){
		
		p.setLayout(new GridLayout(anzPaar,5));
for(int i=0;i<anzPaar;i++){
         
   p.add(lables[i]);
                        p.add(lables[i]);
         
      }
}
```


----------



## Roar (17. Sep 2005)

eine Component kann nur einmal wohin geaddet werden...


----------



## Pete2000 (18. Sep 2005)

Wie bekomme ich es dann hin, dass er eine Oberfläche erstellt, bei der in einem GridLayout
immer 2 JLabels (aus dem Array) und ganz rechts ein JButton steht?


Eigentlich müsste ich das ja so schreiben:



```
p.setLayout(new GridLayout(anzPaar,3));
for(int i=0;i<anzPaar;i++){
         
   p.add(lables[i]);
     p.add(lables[i+1]);       // ohne jetzt den OutOfBounds vom Array am Ende der Schleife zu berücksichtigen
     p.add(new JButton());
         
      }
}
```

aber wie gesagt, fügt er immer ja nur ein Label hinzu,
also wie kann ich das lösen?


----------



## SnooP (18. Sep 2005)

Kannst du nicht anstatt zweimal das gleiche - zweimal gleichartige Lables hinzufügen?


----------



## Pete2000 (19. Sep 2005)

hab ich doch gemacht wie man im code sieht, einmal habe labels_ und danach lables[i+1] eingefügt. Trotzdem wird nur labels geaddet_


----------

