Dynamisch Komponenten zum JPanel hinzufügen

chuvak

Erfahrenes Mitglied
Ich möchte dynamisch ein paar Komponenten zum JPanel hinzufügen, doch leider sind sie nicht zu sehen. Nur die, die im Konstruktor hinzugefügt werden, erscheinen.

Java:
public class View extends JPanel {

JLabel label;
JLabel labels[];
JButton b1 = new JButton("OK");

public View() {
   label = new JLabel("Mein label");
   this.add(label);  // das funktioniert
}


public void showLabels() {
  System.out.println("function showLabels aufgerufen");

  labels = new JLabel[5];

  for (int i = 0; i < 5; i++) {
      labels[i] = new JLabel("Label: " + i);
      this.add(labels[i]); // das funktioniert nicht
  }
  this.add(b1); // das funktioniert auch nicht
  this.revalidate();
  this.repaint();
}
}
 
VIelleicht eine blöde Frage, aber wird die Methode showLabels() überhaupt irgendwo aufgerufen? Weil bei mir werden alle Labels und auch der Button brav hinzugefügt, auch wenn das Fenster bereits sichtbar ist.
 
Ja, die Funktion wird von einer anderen Klasse aus aufgerufen, "function showLabels aufgerufen" erscheint in der Konsole.
Ich habe grade bemerkt, dass alles funktioniert, wenn die Funktion von der selben Klasse aus im Konstruktor aufgerufen wird. Von einer anderen Klasse aus (wie ich es eigentlich brauche), funktioniert nichts...
 
Wie gesagt, bei mir geht alles und bei mir wird der Aufruf auch aus einer andere Klasse heraus gemacht. Habs in verschiedenen Threads probiert, mit Timern, durch nen Klick auf einen Button oder auch einfach nur so, geht immer. Also habe ich entweder nicht deine Kombination probiert oder es liegt an was anderem.

Ich habe Java7u3 installiert, vielleicht hat das damit zu tun, glaube ich aber nicht.

Und das repaint() braucht man nicht, wenn man schon revalidate() aufruft.
 
Zurück