Cómo cambio de tamaño automático JFrame acuerdo con el contenido
-
20-09-2019 - |
Pregunta
He creado una JPanel
personalizado que muestra las imágenes (permite llamarlo MyPanel
), he añadido esto a contentPane de JFrame
.
Quiero JFrame
que se ajustará automáticamente para adaptarse a la MyPanel
cuando los cambios de imagen.
Parece que necesito llamar frame.pack()
para hacer esto. Llamando pack()
de MyPanel
aumenta acoplamiento por lo que no quiero hacer eso.
Para resolver el problema me ampliado JFrame
(llamémosle MyFrame
) e hizo observador MyFrame
y MyPanel
observable. Cada vez que el MyPanel
imagen está mostrando cambios se notifica a los oyentes, MyFrame
para esta instancia. Y luego MyFrame
llama pack()
cuando se hace la notificación.
¿Hay una manera más suave de cambiar el tamaño de JFrame
acuerdo con su contenido?
Solución
La solución que usted describe parece razonable.
Por otra parte, cada vez que MyPanel cambia su imagen, se puede ir a buscar a su marco padre y luego llamar a pack () en él. Si no existe tal marco, entonces no hacer nada. No es necesario crear clases adicionales, y es un acoplamiento lo más suelta que se va a conseguir. Puede utilizar SwingUtilities.getAncestorOfClass () para hacer esto fácilmente.