diesy Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 Hallo, ich habe ein kleines Problem mit JLabel, ImageIcon und Rectangle2D. Ich will auf ein JLabel ein ImageIcon( Bild ) platzieren, klappt alles wunderbar. Es gibt auch keine Probleme. Danach will ich jedoch ein Rectangle2D(Quadrat) von beliebiger Größe auf das JLabel/ImageIcon setzen/malen. Das macht er auch, bloß, das Problem ist jetzt folgendes: Wenn ich die Anwendung minimiere und wieder maximiere/wiederherstelle wird das Quadrat nicht mehr angezeigt. Das wird mehr oder weniger von dem Bild überlagert. Ich habe dazu paar Events implementiert, die auf die Größenänderung und Drag Mouse reagiert, dass funktioniert und das Quadrat wird bei den Events gezeichnet. Gibt es eine Möglichkeit das Quadrat beim Maximieren bzw. beim Focus kriegen auf dem JLabel im Vordergrund zu zeichnen? Bzw. welches Event ist dafür verantwortlich um zu merken, dass das JLabel wieder angezeigt wird bzw. wieder im Vordergrund ist? Bzw. kann man irgendwie die Prioritäten der Objekte beim JLabel vergeben? Dass z.B. Bilder immer unten sind und Rectangle dann oben. Bedingung ist halt eben, dass man nicht auf das Frame bzw. auf das hauptfenster zugreifen darf. Zitieren
baba007 Geschrieben 9. Januar 2007 Geschrieben 9. Januar 2007 vielleicht mit der methode repaint() arbeiten und WindowFocusListener ist dein freund. Zitieren
diesy Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 Das Problem ist, dass es dann z.B. in einem SWT Fenster laufen sollte. Und der WindowListener ist nur mit dem JFrame verfügbar. Ich bräuchtemal sowas ähnliches für JLabel. Zitieren
diesy Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 Problem wurde nun gelöst. Kann geschlossen werden. Lösung: paint() überschreiben und dort das Quadrat zeichnen. Falls sich die Position des Quadrates ändert, mit der if-Anweisung und einem boolean die Bounds nach Wunsch ändern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.