Pregunta

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

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, alguna idea?

Gracias

¿Fue útil?

Solución

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

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

A continuación, haga GridBagLayout agotar toda la altura disponible para el separador:

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

Otros consejos

Tomado de de Sun guía para JSeparator:

  

En la mayoría de las implementaciones, una línea vertical   separador tiene una altura preferida de 0,   y un separador horizontal tiene una   anchura preferida de 0. Esto significa una   separador no es visible a menos que   ya sea establecer su tamaño preferido o poner   en bajo el control de un diseño   gerente o como BorderLayout   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 debería ver algo de espacio   donde el separador es. sin embargo, el   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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top