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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top