bestehendes JFrame mit JLabel ergänzen

ipspy4711

Grünschnabel
Hallo zusammen,

ich benötige eine kleine Hilfe, komme einfach nicht weiter.

Ich habe ein JFrame erstellt, in dieses JFrame wird ein JPanel gesetzt, welches schon mit 3 JLabeln befüllt ist. Im Laufe der Anwendung, sollen in das JPanel aber immer wieder JLabel hinzugefügt werden. Leider bekomme ich es nicht hin, dass das JFrame das neue Label auch mitanzeigt.

Mein Code: (banalisiert, ich habe ihn aus der kompletten Anwendung extrahiert)
Java:
import java.awt.*;
import javax.swing.*;
 
public class fenster
{
  
    private JFrame fenster;
    private JPanel anzeige;
    private String namen;
 
    
    public fenster()
    {
        fenster = new JFrame();
        anzeige = new JPanel();
        namen = null;
    }
 
   public void fensteranzeige(boolean sichtbar)
    {
        anzeige.removeAll();
        String namen = "Hier \n Hallo \n gehts noch \n";
        String[] namenSplit = namen.split("\n");
        
        JPanel content = (JPanel) fenster.getContentPane();
        JPanel anzeige = new JPanel();
        anzeige.setLayout(new BoxLayout(anzeige, BoxLayout.Y_AXIS));
        for (int i=0; i<namenSplit.length; i++)
        {
            JLabel label = new JLabel(namenSplit[i]);
            anzeige.add(label);
        }
        JScrollPane scroll = new JScrollPane(anzeige);
        content.add(scroll);        
        fenster.setMinimumSize(new Dimension(200, 150));
        anzeige.updateUI();
        fenster.validate(); 
        fenster.setVisible(sichtbar);
    }
 
    public void wortHinzufuegen()
    {
        namen+="Hier \n Hallo \n gehts noch \n aber hallo \n";
    }
}


Ich habe alle drei Methoden JPanel.updateUI(), JPanle.validate() und JFrame.validate() versucht, aber keine hilft mir weiter.
 
Das funktioniert so auch überhaupt nicht.
Der String WURDE bereits verarbeitet ... und die JLabel wurden schon erstellt , geadded und angezeigt.
Du müsstest also wenn überhaupt fensteranzeige(boolean) immer wieder neu aufrufen. Das ist schwachsinn. Baue wordAdd() lieber so um das dierekt ein JLabel erstellt , geadded und das JFrame geupdated wird.
Das geht übrigens so am besten :
Java:
JFrame.validate();
JFrame.update(JFrame.getGraphics());
 
Für meine Anwendung muss ich aber die Funktion fensteranzeige(boolean) immer wieder aufrufen. Das Fenster ist nicht immer sichtbar, sondern wird nur für bestimmte Funktionen sichtbar gemacht. Gibt es keine Möglichkeit, meine Funktion "machbar" zu machen?

Sorry, dass man Threads verschieben kann wusst ich net.
 
Zurück