Grid Layout + Array

Status
Nicht offen für weitere Antworten.

Pete2000

Mitglied
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:

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?
 
Hast du vielleicht noch ein bisschen mehr Code? Wäre denke ich hilfreich.
Ansonsten.

Code:
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();
  }
}
 
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.
Code:
new Paarungen(parPanels[1],1);


Hier ist der Konstruktor des Objekts:
Code:
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]);
         
      }
}
 
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:


Code:
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?
 
hab ich doch gemacht wie man im code sieht, einmal habe labels und danach lables[i+1] eingefügt. Trotzdem wird nur labels geaddet
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben