Comment redimensionnement automatique JFrame en fonction du contenu
-
20-09-2019 - |
Question
J'ai créé un JPanel
personnalisé qui affiche des images (permet de l'appeler MyPanel
), je l'ai ajouté à contentPane de JFrame
.
Je veux JFrame
à redimensionner automatiquement à la MyPanel
lorsque des changements d'image.
On dirait que je dois appeler frame.pack()
pour ce faire. Appel pack()
de MyPanel
augmente le couplage, donc je ne veux pas le faire.
Pour résoudre le problème que j'étendu JFrame
(permet de l'appeler MyFrame
) et fait observateur MyFrame
et MyPanel
observable. Chaque fois que l'image MyPanel
affiche des changements en informer les auditeurs, MyFrame
pour cette instance. Et puis MyFrame
appelle pack()
quand il reçoit la notification.
Y at-il un moyen plus lisse de redimensionnement JFrame
selon son contenu?
La solution
La solution que vous avez décrit semble raisonnable.
Vous pouvez également, à chaque fois que MyPanel change d'image, il peut aller trouver son cadre parent puis paquet appeler () là-dessus. Si un tel cadre existe, ne faites rien. Pas besoin de créer des classes supplémentaires, et son aussi lâche un couplage que vous allez obtenir. Vous pouvez utiliser SwingUtilities.getAncestorOfClass () pour le faire facilement.