2010-03-11 9 views
7

Quiero añadir un JSeparator vertical entre dos componentes utilizando un GridBagLayout. El código que tengo es el siguiente:JSeparator suele mostrar con GridBagLayout

public MainWindowBody(){ 
    setLayout(new GridBagLayout()); 

    JPanel leftPanel = new InformationPanel(); 
    JPanel rightPanel = new GameSelectionPanel(); 

    JSeparator sep = new JSeparator(JSeparator.VERTICAL); 
    GridBagConstraints gbc = new GridBagConstraints(); 

    gbc.gridx = 0; 
    gbc.gridy = 0; 
    gbc.anchor = GridBagConstraints.NORTH; 

    add(leftPanel,gbc); 

    gbc.gridx = 1; 
    gbc.gridy = 0; 
    gbc.fill = GridBagConstraints.VERTICAL; 

    add(sep,gbc); 

    gbc.gridx = 2; 
    gbc.gridy = 0; 
    gbc.fill = GridBagConstraints.NONE; 

    add(rightPanel,gbc); 
} 

Pero el JSeperator no muestra ninguna idea?

Gracias

+1

El JSeperator hace realidad "espectáculo", hay una línea muy fina entre los componentes que va a desaparecer si comentar a cabo complemento (sEP, GBC) – Thomas

Respuesta

11

Se podría tratar de establecer el ancho preferido para el separador:

sep.setPreferredSize(new Dimension(5,1)); 

Entonces, hacer GridBagLayout agotar toda la altura disponible para el separador:

gbc.fill = GridBagConstraints.VERTICAL; 
gbc.weighty = 1; 
4

Tomado de guía de Sun para JSeparator:

En la mayoría de las implementaciones, una vertical de separador tiene una altura preferida de 0, y un separador horizontal tiene una anchura preferida de 0. Esto significa un separador no es visible a menos que sea defina su tamaño preferido o poner en bajo el control de un diseño gerente como BorderLayout o BoxLayout que se extiende para llenar su área de visualización disponible.

El separador vertical, tiene un poco de ancho (y la horizontal un poco de altura), por lo que hay que ver un poco de espacio donde el separador es. Sin embargo, la línea de división real no se dibuja a menos que el ancho y la altura son ambos distinto de cero.

Tal vez debería establecer restricciones adecuadas?

+0

¿hay alguna manera bajo la bolsa de diseño de cuadrícula que puedo hacer que se extienden a la altura de la ventana? – Aly

+1

@Aly, establezca gbc.weighty = 1; – Thomas

Cuestiones relacionadas