Question

Je veux ajouter une JSeparator verticale entre deux composants à l'aide d'un GridBagLayout. Le code que j'ai est le suivant:

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

Mais le JSeperator ne montre pas, des idées?

Merci

Était-ce utile?

La solution

Vous pouvez essayer de définir la largeur préférée pour le séparateur:

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

Ensuite, faire GridBagLayout utiliser toute la hauteur disponible pour le séparateur:

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

Autres conseils

Tiré de de Sun Guide pour JSeparator:

  

Dans la plupart des mises en œuvre, une verticale   le séparateur a une hauteur préférée de 0,   et un séparateur horizontal a une   largeur préférée de 0. Cela signifie une   séparateur n'est pas visible à moins que vous   soit définir sa taille préférée ou mettre   en sous le contrôle d'une mise en page   tels que gestionnaire BorderLayout ou   BoxLayout qui s'étend pour remplir   sa zone d'affichage disponible.

     

Le séparateur vertical a un bit   de largeur (et un peu horizontale   hauteur), de sorte que vous devriez voir un peu d'espace   où le séparateur est. Cependant, le   ligne de séparation réelle n'est pas établi   à moins que la largeur et la hauteur sont tous deux   non nul.

Peut-être que vous devez définir des contraintes à droite?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top