Solución:
El uso depende de si el padre del componente tiene un administrador de diseño o no.
-
setSize()
– utilizar cuando no existe un administrador de diseño principal; -
setPreferredSize()
(también está relacionadosetMinimumSize
ysetMaximumSize
): se usa cuando existe un administrador de diseño principal.
los setSize()
el método probablemente no hará nada si el padre del componente está usando un administrador de diseño; los lugares donde esto normalmente tendrá un efecto serían los componentes de nivel superior (JFrame
arena JWindow
s) y cosas que están dentro de los paneles desplazados. También debes llamar setSize()
si tiene componentes dentro de un padre sin un administrador de diseño.
Generalmente, setPreferredSize()
distribuirá los componentes como se espera si hay un administrador de diseño presente; la mayoría de los administradores de diseño trabajan obteniendo los tamaños preferidos (así como mínimos y máximos) de sus componentes, y luego usan setSize()
y setLocation()
para colocar esos componentes de acuerdo con las reglas del diseño.
Por ejemplo, un BorderLayout
intenta hacer que los límites de su región “norte” sean iguales al tamaño preferido de su componente norte — pueden terminar siendo más grandes o más pequeños que eso, dependiendo del tamaño de la JFrame
, el tamaño de los demás componentes del diseño, etc.
setSize()
o setBounds()
se puede utilizar cuando no se utiliza ningún administrador de diseño.
Sin embargo, si está utilizando un administrador de diseño, puede proporcionar sugerencias al administrador de diseño mediante el setXXXSize()
métodos 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 FlowLayout
, GridBagLayout
, y SpringLayout
Los gerentes usan el tamaño preferido del componente (los dos últimos dependiendo de las restricciones que establezca), pero BorderLayout
y GridLayout
Por lo general, no. Si especifica nuevas sugerencias de tamaño para un componente que ya está visible, debe invocar el método de revalidación en él para asegurarse de que su jerarquía de contención se establezca nuevamente. Luego, invoque el método repintado.
setSize
cambiará el tamaño del componente al tamaño especificado.
setPreferredSize
establece el tamaño preferido. Es posible que el componente no tenga realmente este tamaño dependiendo del tamaño del contenedor en el que se encuentra, o si el usuario redimensionó el componente manualmente.