import java.awt.*;
import java.awt.GridBagLayout;

import javax.swing.*;

/**
 * @author Remi Forax
 *
 */
public class GridBagLayoutExample2 {

  private static void addForm(JPanel panel,String text,JComponent component,int gridwidth) { 
    JLabel label=new JLabel(text);
    GridBagConstraints gbc=new GridBagConstraints();
    gbc.gridwidth=1;
    gbc.insets=new Insets(2,7,2,7);
    gbc.anchor=GridBagConstraints.EAST;
    panel.add(label,gbc);
    gbc.gridwidth=gridwidth;
    gbc.fill=GridBagConstraints.HORIZONTAL;
    gbc.weightx=1.0;
    panel.add(component,gbc);
  }
  
  private static void addCombo(JPanel panel,String text,JComponent component) { 
    JLabel label=new JLabel(text);
    GridBagConstraints gbc=new GridBagConstraints();
    gbc.gridwidth=1;
    gbc.insets=new Insets(2,7,2,7);
    gbc.anchor=GridBagConstraints.WEST;
    gbc.weighty=1.0;
    panel.add(label,gbc);
    gbc.gridwidth=GridBagConstraints.REMAINDER;
    gbc.fill=GridBagConstraints.NONE;
    gbc.weightx=1.0;
    panel.add(component,gbc);
  }
  
  private static JButton addButton(JPanel panel,String text) {
    JButton button=new JButton(text);
    GridBagConstraints gbc=new GridBagConstraints();
    gbc.gridwidth=2;
    gbc.insets=new Insets(10,0,2,0);
    gbc.anchor=GridBagConstraints.CENTER;
    gbc.fill=GridBagConstraints.NONE;
    
    panel.add(button,gbc);
    return button;
  }

  public static void main(String[] args) {
    JFrame frame=new JFrame("GridBagLayoutExample2");
    
    JPanel panel=new JPanel(new GridBagLayout());
    
    String[] groups={"ens","étudiant"};
    
    addForm(panel,"login",new JTextField(10),1);
    addForm(panel,"password",new JTextField(10),GridBagConstraints.REMAINDER);
    addCombo(panel,"groupe",new JComboBox(groups));
    addButton(panel,"Annuler");
    addButton(panel,"Ok");
    
    frame.setContentPane(panel);
    frame.pack();
    frame.show();
  }
}
