JSeparator montrer l'habitude avec GridBagLayout
-
19-09-2019 - |
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
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?