Swing Komponente zur Laufzeit neuinitialisieren

darekkay

Bekanntes Mitglied
Hey,
ich würde gerne so eine Methode für MyComponent entwerfen:

Java:
load(MyComponent c){
this = c;
}

Mit anderen Worten möchte ich zur Laufzeit eine Komponente durch eine andere ersetzen. Bevor ich noch mehr Zeit mit diesem Problem verbringe - ist mein Ansatz überhaupt in Ordnung?
Es scheint auf jeden Fall nicht so zu funktionieren, wie ich es mir vorstelle. Hier ein anderes Beispiel:

Java:
JLabel label1 = new JLabel("muh");
mainPanel.add(label1);
label1 = new JLabel("haha");

Im Kopf macht's sinn, Java scheint aber gegen solche Vorgehensweisen was zu haben. Fehlt in meiner Lösung etwas (Sachen a la repaint schon ausprobiert :/), oder ist dieser Ansatz gar nicht möglich?

Die andere Variante wäre, dass ich label1 erst entferne und dann noch mal hinzufüge. Das würde aber nicht immer Sinn machen. Angenommen, ich habe ein FlowLayout, adde die Komponenten nacheinander, und möchte dann bsp. die erste Komponente ersetzen.

Jemand eine Idee?
 

SleepProgger

Mitglied
Was hältst du davon einen Container zu nutzen?
damit haettest du zwar immer den Overhead eines Panels (vlt auch nen einfacheren Container) aber keine Probleme mit dem Layout, oder übersehe ich da gerade etwas?
In etwa:

Java:
JPanel contentPanel = new JPanel();
...add(contentPanel);
JLabel component1 = new JLabel("Erste Komponente");
contentPanel.add(component1);
...
JTextField component2 = new JTextfield("Zwote Komponente");
contentPanel.remove(component1);
contentPanel.add(component2);
 

darekkay

Bekanntes Mitglied
Danke, das löst wirklich mein Problem =)

Trotzdem würde mich interessieren, woran mein ursprünglicher Ansatz (über einfaches " = ") scheiterte. Es kommt mir so vor, als ob bloß eine Funktion a la "repaint()" in meinem Code fehlen würde, um die neue Komponente anzuzeigen.
 

SleepProgger

Mitglied
In Java werden alle Objecte (nicht primitive Datentype (double, int, boolean ...)) per Referenz übergeben.
Bei deinem Beispiel wird also der Variablen label1 ein Pointer auf dein erstes JLabelObject übergeben.
Beim Aufruf der add Methode wird im Panel die Referenz kopiert. Also der Zeiger auf das erste JLabel Object.
Wenn du nun in die Variable label1 einen anderen Pointer schreibst interessiert das dein Panel natürlich nicht.

Hoffe es ist verständlich was ich meine, sonst einfach noch mal nachfragen.


Wenn ich hier was falsches erzähle berichtigt micht bitte. ;)
Aber meiner Erinnerung und Erfahrung nach müsste das so stimmen.
 
Zuletzt bearbeitet:

jgh

Top Contributor
warum nutzt du nicht die "normalen" Methoden, zumindest beim JLabel:

Java:
label1.setTextl("haha");
 

Michael...

Top Contributor
Danke, das löst wirklich mein Problem =)

Trotzdem würde mich interessieren, woran mein ursprünglicher Ansatz (über einfaches " = ") scheiterte. Es kommt mir so vor, als ob bloß eine Funktion a la "repaint()" in meinem Code fehlen würde, um die neue Komponente anzuzeigen.
Es ist zwar möglich den Container der Komponente zubekommen, aber an die Info zu kommen wo und wie die Komponente steckt wird schwierig.
Für den Austausch der CENTER Komponente eines BorderLayouts ginge das problemlos. Aber sonst ist das vermutlich - wenn überhaupt möglich - ziemlich komplex.

Aber warum sollte ein Komponente sich selbst gegen eine andere Komponente austauschen können? Sollte nich der Container über seinen Inhalt bestimmen können?
 

darekkay

Bekanntes Mitglied
warum nutzt du nicht die "normalen" Methoden, zumindest beim JLabel:

Java:
label1.setTextl("haha");

Ein JLabel war nur ein vereinfachtes Beispiel. Bei meinem Problem verwende ich eigene Komponenten.
Ich möchte aber genau das selbe Objekt haben, also müsste ich alle Eigenschaften (BackgroundColor, Font, ...) einzeln kopieren, was doch zu viel des guten wäre ^^

Es ist zwar möglich den Container der Komponente zubekommen, aber an die Info zu kommen wo und wie die Komponente steckt wird schwierig.
Für den Austausch der CENTER Komponente eines BorderLayouts ginge das problemlos. Aber sonst ist das vermutlich - wenn überhaupt möglich - ziemlich komplex.

Aber warum sollte ein Komponente sich selbst gegen eine andere Komponente austauschen können? Sollte nich der Container über seinen Inhalt bestimmen können?

Ja genau, hab ja nach SleepProgger's Tipp einen Container mit einem BorderLayout dazwischen geschoben -> es funzt.

Zu deiner zweiten Frage:
Ich habe eine eigene Komponente, die ich serialisiert abspeichern will, um sie später neuladen zu können. Das einfachste wäre also, wenn diese Komponente eine load-Methode hätte, um sich selbst durch das abgespeicherte Objekt zu ersetzen. Wie gesagt, im Kopf macht's ja Sinn ^^ Aber nun ist es geklärt, danke noch mal ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
A Komponente zur Laufzeit hinzufügen und RICHTIG anzeigen AWT, Swing, JavaFX & SWT 3
G Komponente zur Laufzeit tauschen. AWT, Swing, JavaFX & SWT 5
S Komponente zur Laufzeit hinzufügen & Vergrößern einschrä AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
P Warten auf komponente AWT, Swing, JavaFX & SWT 2
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
T Komponente wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
S Swing Komponente wird überblendet AWT, Swing, JavaFX & SWT 27
A Swing Komponente mehrseitig ausdrucken AWT, Swing, JavaFX & SWT 2
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
B Swing Komponente an Position eines Objektes ausgeben lassen AWT, Swing, JavaFX & SWT 3
R Swing Komponente austauschen AWT, Swing, JavaFX & SWT 2
M JApplet mit Java 3D Komponente AWT, Swing, JavaFX & SWT 6
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
N Swing Java Komponente zur Darstellung von klickbaren Links, die Java Funktionen ausführen können AWT, Swing, JavaFX & SWT 2
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
S Spezielle komponente aktualisieren AWT, Swing, JavaFX & SWT 9
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
1 Swing Spaltenbreite and CellEditor- Komponente anpassen AWT, Swing, JavaFX & SWT 4
R Komponente wieder entfernen AWT, Swing, JavaFX & SWT 13
B Komponente "sauber" entfernen(JToolBar) AWT, Swing, JavaFX & SWT 4
xehpuk Swing Komponente in Graustufen zeichnen AWT, Swing, JavaFX & SWT 2
A Swing GlassPane Cursor wird bei fremder Komponente nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Swing Komponente als Bild speichern AWT, Swing, JavaFX & SWT 11
F visuelle Komponente AWT, Swing, JavaFX & SWT 3
padde479 Komponente gesucht AWT, Swing, JavaFX & SWT 2
A Swing Komponente für Swing und JSF durch MVC AWT, Swing, JavaFX & SWT 5
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
A Swing suche OpenSource Date(Time)Picker Komponente AWT, Swing, JavaFX & SWT 9
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
S Feste Position einer Komponente auf Glasspane AWT, Swing, JavaFX & SWT 6
B Erfragen der Komponente AWT, Swing, JavaFX & SWT 4
M Mausklick an darunterliegende Komponente weiterleiten AWT, Swing, JavaFX & SWT 9
B (Swing) Welche Komponente für unterteilten Text? AWT, Swing, JavaFX & SWT 4
D Wie nennt sich beschriebene Komponente? (-> Autocomplete) AWT, Swing, JavaFX & SWT 5
D Komponente im FlowLayout nicht mittig sondern rechts. Wie? AWT, Swing, JavaFX & SWT 4
G Swing Komponente gesucht (Textfeld mit Liste) AWT, Swing, JavaFX & SWT 2
padde479 Suche eine Komponente (->ToolBar) AWT, Swing, JavaFX & SWT 7
algorismi Browser Komponente AWT, Swing, JavaFX & SWT 3
G Swing Auswahlrechteck über Komponente zeichnen AWT, Swing, JavaFX & SWT 3
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
C Swing Komponente mit setLocation auf JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 3
G Gibt es diese Komponente? AWT, Swing, JavaFX & SWT 11
slawaweis Suche TagCloud Komponente für Swing AWT, Swing, JavaFX & SWT 10
H Swing Eigene Komponente wird nur halb oder komisch angezeigt AWT, Swing, JavaFX & SWT 3
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
H Swing Eigene Komponente reagiert falsch auf mouseClicked() AWT, Swing, JavaFX & SWT 5
D swt komponente in swing-frame AWT, Swing, JavaFX & SWT 4
hdi SWT Operation auf GUI-Komponente kommt mal wieder nicht an... AWT, Swing, JavaFX & SWT 9
N Suche nach Komponente / LaF AWT, Swing, JavaFX & SWT 21
T Swing Gibt es eine Komponente für eine farbliche Editorbox? AWT, Swing, JavaFX & SWT 6
S Swing Komponente mit jogl AWT, Swing, JavaFX & SWT 18
Airwolf89 Swing Von anderer Klasse auf Eigenschaften einer Komponente zugreifen AWT, Swing, JavaFX & SWT 5
SuperSeppel13 Komponente transparent übermalen AWT, Swing, JavaFX & SWT 2
I Swing Warten, bis eine GUI-Komponente aktualisiert ist? AWT, Swing, JavaFX & SWT 4
R Lineal an einer Komponente AWT, Swing, JavaFX & SWT 10
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Ham Swing PropertyChangeListener aufrufende Komponente AWT, Swing, JavaFX & SWT 5
hdi LayoutManager GridBagLayout : Komponente hat falsche Größe? AWT, Swing, JavaFX & SWT 2
hdi Swing Suche passende API Klasse(n) für meine Komponente AWT, Swing, JavaFX & SWT 8
Ä Graphics-Komponente auf JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
H Name einer Komponente ermitteln AWT, Swing, JavaFX & SWT 5
Developer_X Swing Problem beim "rezeichnen" -> Überzeichnen der Komponente AWT, Swing, JavaFX & SWT 8
M Suche Java Komponente AWT, Swing, JavaFX & SWT 2
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
B Swing setDefaultButton geht nicht - Komponente fängt Events ab AWT, Swing, JavaFX & SWT 5
A Suche TreeTable-Komponente AWT, Swing, JavaFX & SWT 12
GilbertGrape ActionListener implementieren oder Eigenen für jede Komponente? AWT, Swing, JavaFX & SWT 9
C Spaltenorientierte Komponente, ähnlich JTabbed gesucht AWT, Swing, JavaFX & SWT 4
V Suche Komponente AWT, Swing, JavaFX & SWT 2
G Coverflow -artige Komponente für Swing? AWT, Swing, JavaFX & SWT 2
F eigene Swing-Komponente. Drehregler AWT, Swing, JavaFX & SWT 4
Landei Welche Kalender-Komponente? AWT, Swing, JavaFX & SWT 3
G Komponente in der der Cursor steht zurückgeben? AWT, Swing, JavaFX & SWT 2
P Unsichtbare Komponente in ein Bild rendern? AWT, Swing, JavaFX & SWT 11
G Komponente die im Center und North Bereich liegt zurückgebe? AWT, Swing, JavaFX & SWT 6
O Zwei Listener auf Komponente, warten auf Beendigun? AWT, Swing, JavaFX & SWT 2
G Kennt jemand diese Komponente? AWT, Swing, JavaFX & SWT 2
G Palette Komponente für Swing? AWT, Swing, JavaFX & SWT 8
M Name der Komponente? AWT, Swing, JavaFX & SWT 2
G Komponente oben positionieren (BorderLayout) AWT, Swing, JavaFX & SWT 3
ChaosNo1 Problem mit Komponente auf JPanel adden (beides abgeleitet) AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben