Dynamischer Inhalt in einem JPanel

Status
Nicht offen für weitere Antworten.

Streen

Mitglied
Also ich habe ein JPanel in dem eine Dynamische Anzahl anderer Labels mit diversen festen Buttons, labels etc angezeigt werden soll.
Durch eingaben können weitere hinzukommen, nur leider wird bei mir im Panel nix angezeigt.

Zur Verdeutlichung erstmal etwas Code:
Code:
m_al_InputFrames.add(new MFInputFrame(cls_InputCommand));
// then redraw the Frame
m_pan_Main = new JPanel();
m_pan_Main.setLayout(new BoxLayout(m_pan_Main, BoxLayout.Y_AXIS));
// display all input
for (int int_Counter = 0; int_Counter < m_al_InputFrames.size(); int_Counter++){
    m_pan_Main.add(m_al_InputFrames.get(int_Counter).getPanel(), null);
}
m_pan_Main.repaint();

Also m_al_Inputframes ist eine Arraylist mit einer meiner Klassen in denen ich ein JPanel mit festem Objekten habe.
Die Funktion getPanel gibt dieses JPanel zurück.
m_pan_Main ist das zunächst leere Panel.
Der Code wird durch ein anderes Event in der Gui ausgelößt (File wurde eingelesen), nur leider tauchen die Neuen Panels mit ihrem inhalt nicht auf, der Code allerdings wird ausgeführt.

Ich denke ich hab hier irgendeinen dummen Anfängerfehler gemacht (bin ja noch einer was Java Guis anbelangt^^)

Wenns noch unklarheiten gibt immer fragen 🙂

Danke, Streen
 
der Code gibt nicht an, in welches JFrame/ bereits angezeigte JPanel das neue JPanel eingefügt wird, nennen wir es x:

x.validate(); // Layout neu berechnen
x.repaint();

oder zur Sicherheit ganz oben an dem JFrame-Objekt aufrufen
 
Hmm also ich hab jetzt mal im Hauptfenster folgendes eingefügt. Also direkt wo ich das Kommando auslöse und ein neues festes Panel in mein Dynamisches Panel hinzufügen will.
Code:
 (0)
m_Flow.addInput(cls_InputCommand); // ruft funktion im JTabbedPane auf die den Aufruf nur weiterleitet an die nächste Ebene (das dynamische Panel)

this.validate();
this.repaint();
Das addInput ist eine weiterleitung an den bekannten Code
Code:
 (3)
public void addInput(Command cls_InputCommand){
	m_al_InputFrames.add(new MFInputFrame(cls_InputCommand)); // (4)hier wird das neue Statische Panel erzeugt
	// then redraw the Frame
	
	m_pan_Main = new JPanel();
	m_pan_Main.setLayout(new BoxLayout(m_pan_Main, BoxLayout.Y_AXIS));
	
	// display all input
	for (int int_Counter = 0; int_Counter < m_al_InputFrames.size(); int_Counter++){
		m_pan_Main.add(m_al_InputFrames.get(int_Counter).getPanel(), null); // hier wird das Statische Panel ins dynamische eingefügt
	}
}
Leider zeichnet er trotzdem nicht die neuen Panels.
Wenn ich allerdings direkt beim initialisieren der Gui das ganze aufrufe passts.

Grüsse, Streen

Ps.: um noch mal meine Struktur etwas zu verdeutlichen, hab ich mal die grobe Struktur aufgeschrieben:
Hauptfenster (0)
--Panel mit Diversen Buttons (1)
--ein JTabbedPane (2)
----mehere unterschiedliche Panes
----Eines davon ist das Dynamische (3)
------Pane mit statischem inhalt (4)
(1) löst das event aus, gibt das an (0) weiter das dann über (2) an (3) weitergegeben wird.
Ich weiss das ganze sieht etwas konfus aus.



PPS.: Ich wusste es es war ein DAU fehler meinerseits
Code:
m_al_InputFrames.add(new MFInputFrame(cls_InputCommand));
		// then redraw the Frame
		
--> Hier erzeuge ich ein neues Objekt, das früher hinzugefügte bleibt allerdings noch im übergeordneten Container enthalten
		//m_pan_Main = new JPanel();
		//m_pan_Main.setLayout(new BoxLayout(m_pan_Main, BoxLayout.Y_AXIS));

--> Leeren des Panels sollte auch mit der richtigen Funktion ausgeführt werden
		m_pan_Main.removeAll();
		
		// display all input
		for (int int_Counter = 0; int_Counter < m_al....
 
// hier wird das Statische Panel ins dynamische eingefügt
aber das dynamische m_pan_Main hat (anscheinend) keine Verbindung zur restlichen GUI,
ergo wird es nicht angezeigt

du sagst, dass es am Anfang klappt, daher bin ich mir nicht sicher woran es liegt,
mir könnte zur Fehlersuche nur mehr Code helfen
 
Siehe mein Edit drüber ...

Dummer Fehler...

*Sich den Spruch einbleut: Java arbeitet mit Pointern*

Kommt halt davon wenn man von 5 Tagen 3 mit unterschiedlichen Programmiersprachen verbringt.

Aber trotzdem vielen Dank
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben