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 :

  1. Deux JLabel (unitLbl et typelbl) sera sur la gauche de l'image
  2. JTextField et JComboBox sera sur la droite de deux JLabel, respectivement, avec une faible distance entre les deux.
  3. 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 deux JLabel 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