Pergunta

Quero adicionar um JSeparator vertical entre dois componentes usando um GridBaglayout. O código que tenho é o seguinte:

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);
}

Mas o JSEPERATOR não aparece, nenhuma idéia?

Obrigado

Foi útil?

Solução

Você pode tentar definir a largura preferida para o separador:

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

Em seguida, faça com que o GridBaglayout use toda a altura disponível para o separador:

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

Outras dicas

Tirado de Sun's Guia para JSeparator:

Na maioria das implementações, um separador vertical tem uma altura preferida de 0, e um separador horizontal tem uma largura preferida de 0. Isso significa que um separador não é visível, a menos que você defina seu tamanho preferido ou o coloque sob o controle de um gerente de layout como BorderLayout ou BoxLayout que o estende para preencher sua área de exibição disponível.

O separador vertical tem um pouco de largura (e a horizontal um pouco de altura), para que você veja algum espaço onde o separador está. No entanto, a linha de divisão real não é desenhada, a menos que a largura e a altura sejam diferentes de zero.

Talvez você deva definir restrições corretas?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top