Einstieg

Das GridBagLayout ist ein äußerst flexibler aber in der Programmierung komplexer LayoutManager. Die darzstellenden Komponenten werden beim GridLayout in einem flexiblen Raster dargestellt. Die Größe der Rasterelemente wird durch die Größe der darzustellenden Komponenten bestimmt. Die Position, Ausrichtung und Größe der einzelnen Komponenten werden beim GridBagLayout durch Zuordnung von GridBagConstraints bestimmt. Im nachfolgenden Beispiel MyGridBagLayour1 soll mit Hilfe des GridBagLayouts ein Panel erzeugt werden, bei dem die Komponenten ähnlich dem GridLayout angeordnet werden.

JPanel mit GridBagLayout

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MyGridBagLayout1 extends JFrame{

  public MyGridBagLayout1(){
    JPanel panel = new JPanel(new GridBagLayout());    
    GridBagConstraints gbc = new GridBagConstraints();
    
    gbc.gridx = 0;
    gbc.gridy = 0;
    panel.add(new JLabel("Label"),gbc);
    gbc.gridx = 1;
    panel.add(new JTextField(6),gbc);
    gbc.gridx = 0;
    gbc.gridy = 1;
    panel.add(new JButton("ÖK"),gbc);
     gbc.gridx = 1;
    panel.add(new JButton("Abort"),gbc);
    
    add(panel);
  }
  
  public static void main(String[] args){
    MyGridBagLayout1 myGridBagLayout1 = new MyGridBagLayout1();
    
    myGridBagLayout1.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
    });

    myGridBagLayout1.pack();
    myGridBagLayout1.setVisible(true);
  }
}
itmapa.de - X2H V 0.20

Instanzvariablen der GridBagConstraints

Wie oben bereits erwähnt, werden Position und Größe und Position der Komponenten beim GridBagLayout über GridBagConstraints bestimmt. Die Bestimmung des Layouts wird über öffentliche Instanzvariablen der GridBagConstraints vorgenommen. Nachfolgend eine Liste der Instanzvariablen des GridBagLayout zur Bestimmung des Layouts:

  • gridx
  • gridy
  • gridwidth
  • gridheight
  • fill
  • ipadx
  • ipady
  • insets
  • anchor
  • weightx
  • weighty

gridx und gridy

Unverzichtbar beim GridBagLayout sind die Instanzvariablen gridx und gridy der GridBagConstraints. Mit Hilfe dieser Variablen werden die Koordinaten (Koordinaten im Sinne Rasterposition und nicht etwa Pixel) für die darzustzellende Komponente festgelegt. Standardmäßig werden gridx und gridy mit dem Wert 0 initialisiert. Das nachfolgende Beispiel zeigt die Verwendung dieser Instanzvariablen zur Plazierung der Buttons. Die Buttons geben als Text die Koordinaten, die zur Plazierung verwendet werden, an. Im Quelltext wird die Erzeugung des Panels in der Methode createThePanel() vorgenommen.

GridBagLayout

import java.awt.*;
import javax.swing.*;

public class MyGridBagLayout2 {

  public static void main(String[] args){
    MyGridBagLayout2 myGridBagLayout2 = new MyGridBagLayout2();
    myGridBagLayout2.createView();
  }
  
  private void createView(){
    JFrame frame = new JFrame();
    frame.add(createThePanel());
    frame.pack();
    frame.setVisible(true);
  }
  
  private JPanel createThePanel(){
    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    
    gbc.gridx = 0;
    gbc.gridy = 0;
    panel.add(new JButton("0,0"),gbc);
    
    gbc.gridx = 1;
    gbc.gridy = 0;
    panel.add(new JButton("1,0"),gbc);

    gbc.gridx = 0;
    gbc.gridy = 1;
    panel.add(new JButton("0,1"),gbc);

    gbc.gridx = 1;
    gbc.gridy = 1;
    panel.add(new JButton("1,1"),gbc);

    gbc.gridx = 0;
    gbc.gridy = 2;
    panel.add(new JButton("0,2"),gbc);
    
    gbc.gridx = 1;
    gbc.gridy = 2;
    panel.add(new JButton("1,2"),gbc);
    
    return panel;
  }
}
itmapa.de - X2H V 0.20

gridwidth und gridheight

Mit den Instanzvariablen gridwidth und gridheight der Klasse GridBagConstraints wird festgelegt, wieviele Spalten und Zeilen eine Komponente im Raster beansprucht. Standardmäßig werden gridwidth und gridheight mit dem Wert 1 initialisiert.

API: GridBagConstraints (Java Platform SE 6) Flagge Großbritanien
http://java.sun.com/javase/6/docs/api/java/awt/GridBagConstraints.html