java - resizing - ¿Qué sucede cuando se cambia el tamaño de un JFrame?
redimensionar componentes jframe (1)
Debe llamar a revalidate()
y luego repaint()
en el contenedor que obtiene componentes agregados o eliminados durante el tiempo de ejecución.
revalidate()
le dice a los administradores de diseño del contenedor que vuelvan a diseñar los componentes que contiene, y esto es lo que falta de su código. Sin esta solicitud, los diseños no cambian, y no verá los cambios hasta que cambie el tamaño de la GUI, que hace prácticamente lo mismo.
Tenga en cuenta que si agrega componentes a la GUI al inicio, la solución es llamar a pack()
y setVisible(true)
al contenedor de nivel superior solo después de que se hayan agregado todos los componentes.
Para obtener detalles sobre qué pack()
hace, haga lo que todos hacemos, lea el código fuente.
Tengo curiosidad sobre lo que sucede exactamente en Java cuando se cambia el tamaño de un JFrame.
Pregunto esto por un problema que estoy teniendo al agregar un componente a mi bigCOntainer (de tipo JPanel) dentro de JFrame. Quiero agregar algo cuando el usuario realiza una determinada acción, pero el componente no se agrega visiblemente hasta que el JFrame se redimensiona de alguna manera.
Descubrí esto cuando estaba experimentando tratando de mostrar el nuevo componente; Llamé a myJFrame.pack (). Como una pregunta secundaria, me gustaría saber qué hace pack (), tanto general como específico para cambiar el tamaño. La documentación de Java lo hace parecer que va a cambiar el tamaño de cada componente a su tamaño preferido. Mi solución, si decido usar pack () en mi implementación para mostrar nuevos componentes, es establecer siempre un tamaño preferido. ¿Alguien puede dar fe de que se trata de una práctica de programación aceptada? Seguro parece una buena idea.
También intenté repintar () para mostrar el nuevo componente, pero eso no funcionó.