Una GUI sin espacio en blanco aparece "llena". ¿Cómo puedo proporcionar espacios en blanco sin recurrir a establecer explícitamente la posición o el tamaño de los componentes?
java
swing
whitespace
layout-manager
Andrew Thompson
fuente
fuente
Respuestas:
Usar varios
LayoutManagers
puede proporcionar espacio entre varios componentes.1.) BorderLayout:
Métodos getter y setter
Para el espaciado horizontal : BorderLayout.getHgap () y BorderLayout.setHgap (int hgap)
Para el espaciado vertical : BorderLayout.getVgap () y BorderLayout.setVgap ()
2.) Diseño de flujo:
Métodos getter y setter
Para el espaciado horizontal : FlowLayout.getHgap () y FlowLayout.setHgap (int hgap)
Para el espaciado vertical : FlowLayout.getVgap () y FlowLayout.setVgap ()
3.) GridLayout:
Métodos getter y setter
Para el espaciado horizontal : GridLayout.getHgap () y GridLayout.setHgap (int hgap)
Para el espaciado vertical : GridLayout.getVgap () y GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( ejemplo ):
CardLayout (int hGap, int vGap)
Ejemplo para mostrar todos los constructores en acción:
SALIDA
fuente
Hay varias formas en una interfaz gráfica de usuario de Swing para proporcionar una separación entre los componentes y el espacio en blanco alrededor de los componentes:
JToolBar
tiene los métodosaddSeparator()
&addSeparator(Dimension)
.JMenu
utiliza un componente de espacio más adecuado para menús, disponible a través deaddSeparator()
.Pero más generalmente, busque:
Aquí hay un ejemplo de cómo usar el separador de diseño
hGap
y losvGap
valores y bordes (específicamente unEmptyBorder
) para proporcionar espacio 'blanco' (en realidad se muestra como rojo para hacerlo muy obvio). Ajuste los hilanderos para ver el resultado.fuente
Cuando lo usa
BoxLayout
, elBox.createVerticalGlue()
método puede ayudarlo a crear algo de espacio en blanco.Otro método es
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Puede ayudarlo a crear un espacio en blanco alrededor del componente.Gracias por el recordatorio de Andrew Thompson. He revisado BoxLayout en los últimos días y creo que
Box.createVerticalGlue()
puede agregar algo de espacio en blanco depende del tamaño del panel y no puede establecer el valor de píxel explícito de la longitud del espacio en blanco. PeroBox.createVerticalStrut()
puede hacerlo. Aquí hay un MCTaRE y muestra el efecto de esos dos métodos.Box.createHorizontalGlue()
yBox.createHorizontalStrut(int height)
se puede usar también. Además, tambiénBox.createRigidArea(Dimension d)
tiene la capacidad de crear espacios en blanco.fuente
MigLayout
tiene múltiples formas de crear espacio. (Un espacio se denomina espacio en este diseño). Se pueden crear espacios en el nivel más alto con restricciones de diseño, es posible crear espacios entre filas y columnas y también se pueden establecer espacios entre componentes individuales con restricciones de componentes. También hay lagunas específicas alrededor de los bordes de un contenedor llamado inserciones que tienen su propia palabra clave específica para establecer.El siguiente ejemplo crea todos estos tipos de brechas:
Tenemos cuatro paneles en el diseño. Cada uno de estos paneles tiene un
MigLayout
gerente.Esta línea crea inserciones de contenedores y espacios verticales entre los paneles.
Aquí aplicamos huecos para toda la estructura de la cuadrícula y también establecemos huecos de contenedores.
Esta línea crea espacios entre columnas.
Las brechas de fila se definen con este código.
Finalmente, es posible crear brechas entre componentes individuales.
fuente
JGoodies FormLayout .
La autora Karsten Lentzsch tiene una colección de presentaciones sobre diseño de interfaz de usuario. En particular, este PDF habla de la necesidad de espacios en blanco estéticos. Agregar un espacio significativo y al mismo tiempo prestar atención al desorden separa el trigo de la paja.
fuente
Cada vez que tengo este problema, solo uso JPanels. Por ejemplo en un GridLayout:
Espero que esto haya ayudado :)
fuente