2011-01-08 21 views
5

Al usar Swing, ¿cuál es la mejor manera de aplicar indentación a algunos componentes debajo de una casilla de verificación o un botón de opción? Necesito hacer algo al estilo del diálogo Opciones-> Privacidad de Firefox 3.6 donde algunas casillas de verificación están sangradas debajo de una casilla de verificación "principal". Puedo usar cualquiera de los diseños estándar de AWT/Swing incluyendo GroupLayout. También tengo JGoodies FormLayout disponible para mí. Intenté usar setLeadingColumn offset en FormLayout al principio, pero parecía que no iba a funcionar bien a menos que estuviera sangrando debajo de un Separador. Tal vez solo lo estaba haciendo mal?Cómo doblar cuidadosamente algunos componentes utilizando diseños Java Swing

¿Hay algo así como la configuración horizontal de SWT GridLayout? Eso sería perfecto.

Estoy trabajando con JDK1.6.0_23.

Respuesta

2

Hay varias maneras de hacer esto:

  1. Ajuste cada componentes fronterizas para: new EmptyBorder (0, 10, 0, 0).

  2. Usa un GridBagLayout y usa un Inset (0, 10, 0, 0) para rellenar el lado izquierdo.

  3. Utilice GridBagLayout y la casilla de verificación principal abarque dos columnas, mientras que las casillas de verificación secundarias se compensan colocándolas en la columna de la derecha.

  4. Suministra iconos de casillas de verificación personalizadas que tienen espacio vacío añadido a los bordes de la izquierda.

etc.

Mi consejo sería aprender la GridBagLayout - es poco difícil de manejar para usar pero sí le dará más o menos todo el poder de disposición que pueda desear. El material de JGoodies es útil para cuando quieres un comportamiento de tamaño de columna automático particular que GBL no te dará sin algún código adicional de tu parte.

0

Debe ser capaz de lograr esto con FormLayout, solo agregue otra columna para los elementos secundarios, y tenga el elemento principal abarque 2 columnas.

3

Cree un JPanel para los subcomponentes. Luego puede agregar un EmptyBorder al panel con la sangría requerida.

+0

De manera más fácil para las soluciones simples que el 'GridBagLayout', y no se meterá con el indicador de enfoque como lo haría un' EmptyBorder'. – 2rs2ts

0

Otra opción es usar SpringLayout y agregar relleno.