2010-04-01 15 views
10

que tienen un código como que:¿Cómo puedo establecer la distancia entre los elementos ordenados verticalmente?

JPanel myPanel = new JPanel(); 
    myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS)); 

    JButton button = new JButton("My Button"); 
    JLabel label = new JLabel("My label!!!!!!!!!!!"); 

    myPanel.add(button); 
    myPanel.add(label); 

De esta manera, consigo elementos con ninguna distancia entre ellos. Quiero decir, los elementos "superiores" siempre tocan el elemento "inferior". ¿Cómo puedo cambiarlo? Me gustaría tener alguna separación entre mis elementos?

Pienso en agregar un JPanel "intermedio" (con algún tamaño) entre mis elementos. Pero no creo que sea una manera elegante de obtener el efecto deseado. ¿Alguien puede ayudarme con eso?

Respuesta

13
JPanel myPanel = new JPanel(); 
    myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS)); 

    JButton button = new JButton("My Button"); 
    JLabel label = new JLabel("My label!!!!!!!!!!!"); 

    myPanel.add(button); 
    myPanel.add(Box.createVerticalStrut(20)); 
    myPanel.add(label); 

serán una forma de hacerlo.

1

Utilice la clase Box como un elemento de relleno invisible. Así es como Sun recomienda que lo hagas.

BoxLayout tutorial.

2

Es posible que desee considerar GridLayout en lugar de BoxLayout, tiene los atributos Hgap y Vgap que le permiten especificar una separación constante entre los componentes.

GridLayout layout = new GridLayout(2, 1); 
layout.setVgap(10); 
myPanel.setLayout(layout); 
myPanel.add(button); 
myPanel.add(label); 
5

Si está sin duda la intención de utilizar BoxLayout a la disposición de su panel, después usted debe echar un vistazo a la How to Use BoxLayout Sun Learning Trail, específicamente la sección Using Invisible Components as Filler. En resumen, la BoxLayout puede crear componentes invisibles especiales que actúan como separadores entre sus otros componentes:

container.add(firstComponent); 
container.add(Box.createRigidArea(new Dimension(5,0))); 
container.add(secondComponent); 
+1

En este caso también se podría utilizar Box.createVerticalStrut (5). También hay un Box.createHorizontalStrut (int) complementario. Yo prefiero estos cuando una de las dimensiones es cero. –

Cuestiones relacionadas