JComponent ersetzen

Status
Nicht offen für weitere Antworten.
S

splitshade

Gast
Hey leute,

sagt mal, gibt es eine Möglichkeit, in einem Swing-Layout eine Komponente komplett durch eine andere zu ersetzen?
Ich habe ein komplexes Layout, jede Komponente hat eine Id, jetzt möchte ich z.B auf einen Button eine Action legen,
die z.B. das Panel mit id "Com1" durch ein neues Panel ersetzt.
Welche Möglichkeiten hab ich?


Gruß

Martin
 

Leroy42

Top Contributor
Mit remove die alte Komponente entfernen (d.h. du mußt sie dir merken
(als Instanzvariable)), mit einer passenden add-Variante die neue Komponente
einfügen und schließlich revalidate auf deinem Panel ausführen.
 
S

splitshade

Gast
Ja soweit klar,

allerdings weiß ich keine passende Add-Methode..
Ein Tipp wäre hilfreich, ich bin mittlerweile soweit, dass ich die passende Komponente finde, und sie
auch entfernen kann, aber ein add() setzt die neue Komponente nicht an die richtige Stelle,
sondern an die nächste freie Stelle des LayoutManagers.

Martin
 

Leroy42

Top Contributor
splitshade hat gesagt.:
allerdings weiß ich keine passende Add-Methode.

Die ist abhängig vom Layout daß dein JPanel hat.

Für FlowLayout, GridLayout, ...

genügt ein einfaches add(component),

Bei BorderLayout z.B.

add(component, BorderLayout.CENTER)
 
S

splitshade

Gast
das setzt das Component aber nicht an die aktuelle Stelle,

im Beispiel FlowLayout(), ich habe 3 Buttons, und möchte den mittleren austauschen,
also entferne ich den mittleren, und möchte anstatt des Buttons nun ein JLabel in die Mitte setzen.
Wenn ich nun panel.add(new JLabel("schöner Text")); ausführe, steht das Label rechts.
Tja, blöd, denn es muß in die Mitte, dieses Beispiel nun um 5000% komplizierter
(im Layout sind momentan ca 300 Komponenten), dann weißt du mein Problem.

Ich bräuchte eine Methode "replaceAt" replaceComponent, addCOmponentAt oder sowas
 

André Uhres

Top Contributor
splitshade hat gesagt.:
..Ich bräuchte eine Methode "replaceAt" replaceComponent..
Code:
   private void replaceComponent(JPanel panel, Component a, Component b){
        int i = panel.getComponentZOrder(a);
        panel.add(b);
        panel.setComponentZOrder(b, i);
        panel.remove(a);
    }
 
S

splitshade

Gast
Ja, die Idee hatte ich auch schon, allerdings funktioniert das wohl nicht im GridBagLayout?
 

Leroy42

Top Contributor
splitshade hat gesagt.:
im Beispiel FlowLayout(), ich habe 3 Buttons, und möchte den mittleren austauschen

Wieder mit einem Button?

Wieso änderst du da nicht einfach den Text des Buttons und verpaßt ihm einen
neuen ActionListener (den alten natürlich entfernen). :shock:
 
S

splitshade

Gast
Na,na, das war nur ein Beispiel, um die Problematik zu verdeutlichen,
das eigentliche Problem ist viel, viel komplizierter und tut auch nichts zur Sache.

Es muss doch eine Möglichkeit geben, das zu machen??
 
S

splitshade

Gast
Wir arbeiten an einem XML-Layouting System, und dem liegt nun mal leider ein GBL zugrunde :cry:
 
S

splitshade

Gast
Komisch, hier klappt das nicht

if (((XComponent)comp).getId()!=null && ((XComponent) comp).getId().equals(id)) {

int index=((JComponent)component).getComponentZOrder(comp);
JButton button=new JButton("hit me");
((JComponent)component).add(button);
((JComponent)component).setComponentZOrder(button, index);
((JComponent)component).remove(comp);
((JComponent)component).revalidate();
}

der Button wird falsch eingefügt..

komisch
 
S

splitshade

Gast
Ok, Trick ist folgender

int index=((JComponent)component).getComponentZOrder(comp);
GridBagConstraints constraint=((GridBagLayout)((JComponent)component).getLayout()).getConstraints(comp);

((JComponent)component).add(newComponent,constraint);

((JComponent)component).remove(comp);
((JComponent)component).revalidate();
((JComponent)component).repaint();

Tja, man muss nur drauf kommen, danke euch!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
Hatsi09 JComponent anklicken und "entklicken" AWT, Swing, JavaFX & SWT 7
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
S Swing Schwierigkeiten mit JComponent AWT, Swing, JavaFX & SWT 4
T Swing JComponent vergrößern AWT, Swing, JavaFX & SWT 4
L JComponent und MouseMotionListener AWT, Swing, JavaFX & SWT 2
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
W JComponent - ComponentListener - resized / moved AWT, Swing, JavaFX & SWT 5
Developer_X Wie heißt das JComponent hier? AWT, Swing, JavaFX & SWT 2
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
A Abgeleitete JComponent wird nicht gezeichnet AWT, Swing, JavaFX & SWT 10
A JComponent Größe AWT, Swing, JavaFX & SWT 8
T jcomponent wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
N 2D-Grafik RTF in eigener JComponent AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
P JComponent / JLabel drehen (Rotation) AWT, Swing, JavaFX & SWT 2
D JComponent erweitern AWT, Swing, JavaFX & SWT 4
1 JComponent -> java.lang.NullPointerException AWT, Swing, JavaFX & SWT 13
M 2x JComponent in einem JFrame darstellen? AWT, Swing, JavaFX & SWT 7
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
H JComponent == JTextfield? AWT, Swing, JavaFX & SWT 4
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
G JComponent nachträglich in JPanel einfügen AWT, Swing, JavaFX & SWT 5
M Ganzen Frame mit JComponent ausfüllen AWT, Swing, JavaFX & SWT 9
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
I Swing JComponent als BufferedImage speichern AWT, Swing, JavaFX & SWT 18
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
T JComponent nur in Swing verwendbar? AWT, Swing, JavaFX & SWT 6
M Mehrere Icons in einer JComponent AWT, Swing, JavaFX & SWT 5
Dragonfire Image von JComponent AWT, Swing, JavaFX & SWT 2
T x und y herrausfinden eines JComponent auf JFrame AWT, Swing, JavaFX & SWT 14
J absolute Position einer JComponent ermitteln AWT, Swing, JavaFX & SWT 4
B "weiches" Bewegen von einem JComponent AWT, Swing, JavaFX & SWT 18
ARadauer JPanel vs JComponent AWT, Swing, JavaFX & SWT 2
I JDialog aus JComponent erstellen AWT, Swing, JavaFX & SWT 2
S JComponent u. JPanel ausdrucken AWT, Swing, JavaFX & SWT 3
J SWT JComponent Problem AWT, Swing, JavaFX & SWT 4
T JComponent überzeichnen? AWT, Swing, JavaFX & SWT 2
G JComponent in JTable AWT, Swing, JavaFX & SWT 8
M JComponent wird in JFrame nicht angezeigt AWT, Swing, JavaFX & SWT 4
D bei Thread in JComponent malen NullPointerException AWT, Swing, JavaFX & SWT 3
S Alle EventListener einer JComponent abfragen? AWT, Swing, JavaFX & SWT 3
S JComponent in JPanel darstellen AWT, Swing, JavaFX & SWT 2
N JComponent#getClientProperty(key) welche Schlüssel gibt es? AWT, Swing, JavaFX & SWT 3
E Drucken von JComponent. AWT, Swing, JavaFX & SWT 4
R Resize Problem bei JComponent AWT, Swing, JavaFX & SWT 2
M JButton in JComponent abfragen AWT, Swing, JavaFX & SWT 6
S Mausbehandlungen für JComponent AWT, Swing, JavaFX & SWT 7
M Verschiebbare JComponent AWT, Swing, JavaFX & SWT 5
C zeichnen auf jComponent AWT, Swing, JavaFX & SWT 3
S in einem JComponent zu zeichnen AWT, Swing, JavaFX & SWT 4
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
R JComponent malt seine Kinder nicht AWT, Swing, JavaFX & SWT 8
G JComponent Hintergrund AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G Graphics (g) und JComponent prob. AWT, Swing, JavaFX & SWT 2
G Klasse XYComponent extends JComponent AWT, Swing, JavaFX & SWT 3
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
K JTable komplett durch andere ersetzen AWT, Swing, JavaFX & SWT 4
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
S Swing JPanel in View ersetzen AWT, Swing, JavaFX & SWT 10
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
E JPanel mit anderem JPanel ersetzen AWT, Swing, JavaFX & SWT 5
L SWT Text SelectionText ersetzen durch anderen String AWT, Swing, JavaFX & SWT 6
F JPanel aus sich selbst heraus ersetzen. AWT, Swing, JavaFX & SWT 9
C Anführungszeichen in JTextArea für Datenbank ersetzen AWT, Swing, JavaFX & SWT 3
lumo Swing Componenten ersetzen AWT, Swing, JavaFX & SWT 2
B Swing Windows Shortcuts ersetzen AWT, Swing, JavaFX & SWT 9
S SWT: Widgets ersetzen AWT, Swing, JavaFX & SWT 6
J JPanel ersetzen AWT, Swing, JavaFX & SWT 2
B Bild ersetzen AWT, Swing, JavaFX & SWT 6
B JWidget/ Bild ersetzen AWT, Swing, JavaFX & SWT 3
J Im JLabel Bild durch anderes ersetzen, ohne dass es 'blinkt' AWT, Swing, JavaFX & SWT 12
S Buttons ersetzen AWT, Swing, JavaFX & SWT 5
S Update des fensters beim Ersetzen von JPanels AWT, Swing, JavaFX & SWT 9
B Tabsetpanel durch JPanel ersetzen! AWT, Swing, JavaFX & SWT 4
G JTextArea & JTextField Selection Problem (ersetzen) AWT, Swing, JavaFX & SWT 2
W Elemente aus JPanel bzw. GridBag löschen und ersetzen AWT, Swing, JavaFX & SWT 18
D Widget/Control während Laufzeit durch ein anderes ersetzen AWT, Swing, JavaFX & SWT 3
T JTextPane - ;-) gegen Smylies ersetzen AWT, Swing, JavaFX & SWT 2
F Das Standardbild beim JEditorPane ersetzen? AWT, Swing, JavaFX & SWT 8
M Panel durch ein anderes Panel ersetzen AWT, Swing, JavaFX & SWT 4
A JTable "ersetzen" AWT, Swing, JavaFX & SWT 2
L Java-Logo in Java-Applikation durch eignes ersetzen AWT, Swing, JavaFX & SWT 12
S AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem AWT, Swing, JavaFX & SWT 4
S Komponente auf einem JPanel ersetzen AWT, Swing, JavaFX & SWT 4
P Text aus JTextField auslesen und Buchstaben ersetzen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben