ventana tamaño sirve setsize setpreferredsize redimensionar que para metodo evento ejemplo cambiar java swing jframe jpanel

tamaño - Java: diferencia entre los métodos setPreferredSize() y setSize() en los componentes



setsize java para que sirve (4)

Ok, leí la documentación de Java y simplemente no puedo entender cuál es la principal diferencia entre esos dos métodos. A veces utilicé setSize() , a veces setPreferredSize() , a veces uno hace lo que quiero, a veces el otro.

Entonces, ¿cuál es la principal diferencia entre los dos? ¿Cuál debería usar para JFrames y JPanels ?

Gracias


IIRC ...

setSize establece el tamaño del componente.

setPreferredSize establece el tamaño preferido. Layoutmanager intentará organizar ese espacio para su componente.

Depende de si está usando un administrador de diseño o no ...


La respuesta corta es: es complicado.

La respuesta ligeramente más larga es: use setSize() si el elemento primario de su componente no tiene administrador de diseño, y setPreferredSize() y su setMinimumSize y setMaximumSize relacionados si lo hace.

setSize() probablemente no hará nada si el padre del componente está usando un administrador de diseño; los lugares que normalmente tendrán un efecto serían los componentes de nivel superior ( JFrames y JWindows ) y elementos que están dentro de los scrolled panes . También debe llamar a setSize() si tiene componentes dentro de un elemento primario sin un administrador de diseño.

Como regla general, setPreferredSize() debería hacer lo "correcto" si tiene un administrador de diseño; la mayoría de los administradores de diseño trabajan obteniendo los tamaños preferidos (así como mínimo y máximo) de sus componentes, y luego usan setSize() y setLocation() para posicionar esos componentes de acuerdo con las reglas del diseño. Entonces (como un ejemplo) un BorderLayout intentará hacer que los límites de su región "norte" sean iguales al preferred size de su componente norte; pueden terminar siendo más grandes o más pequeños que eso, dependiendo del tamaño del jframe , el tamaño de los otros componentes en el diseño, y así sucesivamente.


setSize() o setBounds() se pueden usar cuando no se usa el administrador de diseño.

Sin embargo, si está utilizando un administrador de disposición, puede proporcionar sugerencias al administrador de disposición utilizando los métodos setPreferredSize() como setPreferredSize() y setMinimumSize() etc.

Y asegúrese de que el contenedor del componente utilice un administrador de diseño que respete el tamaño solicitado. Los GridBagLayout FlowLayout , GridBagLayout y SpringLayout usan el tamaño preferido del componente (los dos últimos dependen de las restricciones que establezca), pero BorderLayout y GridLayout generalmente no. Si especifica nuevos consejos de tamaño para un componente que ya está visible, necesita invoque el método de revalidación para asegurarse de que su jerarquía de contención se distribuya de nuevo. Luego invoque el método de repintado.


setSize cambiará el tamaño del componente al tamaño especificado.

setPreferredSize establece el tamaño preferido. Es posible que el componente no sea de este tamaño en función del tamaño del contenedor en el que se encuentra, o si el usuario modificó el tamaño del componente manualmente.