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.
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); } }
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
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.
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; } }
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)
http://java.sun.com/javase/6/docs/api/java/awt/GridBagConstraints.html