Slyh: Probleme mit Bildanzeige

Beitrag lesen

Hallo,

Die Frage ist jetzt, ob der Befehl
panel.getContentPane().add(new Images(finalImg), BorderLayout.SOUTH);

auch bei dem zweiten Bild immer noch so stimmt, denn das Bild wird ja hinter dem ersten gemalt.

Ich hätte präziser fragen sollen.

Willst du denn, daß das erste Bild stehen bleibt, so daß das erste Bild
durchscheint, falls das zweite Bild kleiner als das erste ist?

Willst du das nicht, kannst du ja einfach das Image in deiner Images-
Klasse ersetzen und einen Repaint initiieren.

Sollen beide zu sehen sein und die zuletzt hinzugefügte Komponente
auch zuletzt gezeichnet werden, dann solltest du dir mal die
Methode Container.add(Component comp, Object constraints, int index)
ansehen. In "index" kannst du die festlegen, welche Komponenten
zuerst gezeichnet wird. Die Komponente mit dem kleinsten Index wird
zuletzt gezeichnet.
Du würdest also jede neue Komponente mit dem index 1 einfügen, weil
diese zuletzt gezeichnet werden soll. (Bisher gibst du keinen Index
an, was dazu führt, daß die Komponente an das Ende der Liste angehängt
wird und somit den höchsten Index erhält.)

Ab Java 1.5 gibt es außerdem die Methode
Container.setComponentZOrder(Component comp, int index).
Damit kannst du nachträglich nochmal die Z-Ordnung ändern. Im Grunde
macht der dort angegebene "index" nichts anderes, als der "index"
beim oben erwähnten Container.add(...).

Übrigens solltest du hier kein BorderLayout verwenden. Dieser Layout-
Manager kann nämlich eigentlich nur eine Komponente je Himmelsrichtung
layouten. Es ist Zufall, daß die beiden Komponente, die derselben
Himmelsrichtung zugeordnet wurden, übereinander dargestellt wurden.
Das hängt wohl damit zusammen, daß BorderLayout keine Informationen
über solche Komponenten zurückliefert und AWT die Komponente dann
zufällig an die für dich geeignete Position zeichnet.
(Es wird immer nur die zuletzt für die Himmelsrichtung festgelegte
Komponente vom LayoutManager layoutet.)

Gruß
Slyh