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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top