Frage

Ich habe eine benutzerdefinierte JPanel erstellt, dass zeigen Bilder (Anruf läßt es MyPanel), habe ich hinzugefügt, dies zu JFrame des contentPane.

Ich mag JFrame automatisch angepasst werden, um die MyPanel, wenn die Bildänderungen anzupassen.

Es sieht aus wie ich Anruf frame.pack() müssen dies zu tun. Der Aufruf pack() von MyPanel erhöht Kupplung so will ich nicht, das zu tun.

Um das Problem zu lösen, ich JFrame erweitert (nennen wir es MyFrame) und MyFrame Beobachter gemacht und MyPanel beobachtet werden. Jedes Mal, wenn das Bild MyPanel wird Änderungen Anzeige benachrichtigt er die Zuhörer, MyFrame für diese Instanz. Und dann MyFrame Anrufe pack() wenn sie die Mitteilung erhalten.

Gibt es einen glatten Weg JFrame nach ihrem Gehalt an Größe ändern?

War es hilfreich?

Lösung

Die Lösung, die Sie sinnvoll beschrieben scheinen.

Alternativ, wenn MyPanel sein Bild ändert, kann es gehen seine Eltern Rahmen finden und dann Pack () aufrufen, auf sie. Wenn kein solcher Rahmen existiert, dann tut nichts. Keine Notwendigkeit, zusätzliche Klassen zu erstellen, und seine wie eine Kupplung lösen, wie Sie bekommen werden. Sie können SwingUtilities.getAncestorOfClass () dies leicht zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top