Java GridBagLayout : créer un composant aligner à gauche
J'ai cette mise en page à l'aide de GridBagLayout
:
public class Example extends JFrame {
public Example() {
Border outline = BorderFactory.createLineBorder(Color.black);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
JPanel pane = new JPanel(gbl);
gbc.weighty = 1.0;
gbc.weightx = 1.0;
JLabel unitLbl = new JLabel("Unit");
unitLbl.setBorder(outline);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(unitLbl, gbc);
pane.add(unitLbl);
JLabel typeLbl = new JLabel("Type");
typeLbl.setBorder(outline);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(typeLbl, gbc);
pane.add(typeLbl);
JTextField unitField = new JTextField();
typeLbl.setBorder(outline);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(unitField, gbc);
pane.add(unitField);
String[] type = {"All", "Verb", "Noun", "Adjective"};
JComboBox<String> comboBox = new JComboBox<String>(type);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.ipadx = 30;
gbc.ipady = 10;
gbl.setConstraints(comboBox, gbc);
pane.add(comboBox);
add(pane, BorderLayout.CENTER);
setSize(new Dimension(400, 300));
getContentPane().setBackground(Color.WHITE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Example();
}
});
}
}
Dans cet exemple, lorsque vous exécutez, Il semble que chaque composant est au centre de l'image. Mais ce que je veux est :
- Deux
JLabel
(unitLbl
ettypelbl
) sera sur la gauche de l'image JTextField
etJComboBox
sera sur la droite de deuxJLabel
, respectivement, avec une faible distance entre les deux.- En outre, je veux ajouter un nouveau
JButton
à l'emplacement (3,0) de la grille, mais la hauteur de cet endroit, de la somme de deuxJLabel
hauteur. Cela signifie, ce bouton hauteur est sur "deux lignes".
Comment puis-je corriger ce code pour atteindre cet objectif ? S'il vous plaît aider moi.
Merci 🙂
OriginalL'auteur hqt | 2012-10-15
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser
GridBagConsraints#ancre
pour définir la position à l'intérieur de la cellule que vous souhaitez aligner le composant.Pour permettre à un composant pour une durée de plus de nombre de cellules que vous souhaitez utiliser
GridBagConstraints#gridwidth
etGridBagConstraints#gridheight
(la valeur par défaut est 1)OriginalL'auteur MadProgrammer
Quelque chose comme cela devrait faire l'affaire:
weightx/weighty
(comment est extra horizontale/verticale de l'espace redistribués)fill
(attribut est le composant tendu verticalement/horizontalement/les deux?)anchor
attribut (si le composant n'est pas tendu, ou au moins pas dans les deux sens, où devrait-il être situé à l'intérieur de ses cellules)insets
suripadx/ipady
(extra blanc-espace doit être ajouté autour du composant ou à l'intérieur du composant)weightx/weighty
etfill
OriginalL'auteur Guillaume Polet
Quelques réponses:
Mettre l'ancre pour unitlbl à l'OUEST.
Et le point d'ancrage pour unitField à l'EST.
Et pour le bouton:
OriginalL'auteur Dan D.