Dies ist eine alte Version des Dokuments!


AWT

GridBagLayout

Immer wieder hört man, dass das GridBagLayout so kompliziert sei. Zwar ist es wirklich sehr umfangreich, aber in der Regel benötigt man nur wenige Methoden. Grundsätzlich arbeitet das GridBagLayout mit einem gedachten Gitter. Jedes Feld in diesem Gitter kann durch seine Position (x,y) adressiert werden. Um die Größe des Gitters zu bestimmen, kann man sich das gewünschte Layout ja auf einem Stück Papier skizieren. Mit der Klasse GridBagConstraints werden die Eigenschaften eines einzelnen Elements festgelegt.

Beispiel: Der gewünschte Dialog


Das dahinter liegende Gitter

0,0 1,0
0,1 1,1

Die Liste auf der linken Seite belegt also die beiden Gitterfelder 0,0 und 0,1. Die Höhe der Liste beträgt somit „2“.

Der dazugehörige Source sieht so aus:

package com.sowas.javademo.awt;
 
import java.awt.*;
import java.awt.event.*;
 
public class GridBagLayoutDemo extends Frame implements ActionListener{
	Button btClose;
 
	public GridBagLayoutDemo(){
		super("GridBagLayoutDemo");
 
		GridBagLayout gbl=new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints gbc=new GridBagConstraints();
 
		// Festlegen, dass die GUI-Elemente die Gitterfelder in 
                // waagerechter Richtung ausfüllen:
		gbc.fill=GridBagConstraints.HORIZONTAL;
 
		// Die Abstände der einzelnen GUI-Elemente zu den gedachten 
                // Gitterlinien festgelegen:
		gbc.insets = new Insets(2,2,2,2);  
 
		gbc.gridx = 0;  // x-Position im gedachten Gitter
		gbc.gridy = 0;  // y-Position im gedachten Gitter
		gbc.gridheight = 2;  // zwei Gitter-Felder hoch
		List list = new List(3);
		gbl.setConstraints(list, gbc);
		add(list);
 
		gbc.gridx=1; 
		gbc.gridy=0;
		gbc.gridheight = 1;
		Label label = new Label("Nur eine Demo");
		gbl.setConstraints(label, gbc);
		add(label);
 
		gbc.gridx=1; 
		gbc.gridy=1;
		gbc.gridheight = 1;
		btClose = new Button("Schließen");
		btClose.addActionListener(this);
		gbl.setConstraints(btClose, gbc);
		add(btClose);
 
		pack();
	}
 
	public void actionPerformed(ActionEvent e){
		if (e.getSource() == btClose)
			dispose();
	}
 
	public static void main(String[] args){
		GridBagLayoutDemo demo = new GridBagLayoutDemo();
		demo.setVisible(true);
	}
}

Natürlich hat das GridBagLayout noch mehr Möglichkeiten. Häufig verwendet werden auch noch die GridBagConstraints-Parameter

weightx

und

weighty

. Diese können Werte zwischen 0.0 und 1.0 einnehmen und geben an, wie der verbleibende Freiraum aufgeteilt wird. Beispiel: Ein Dialog habe eine verfügbare Breite von 600 Pixeln. In diesem Dialog seien zwei Elemente A und B angeordnet. Dabei habe Element A ein minimalen Platzbedarf von 300 Pixeln und Element B einen minimalen Platzbedarf von 100 Pixeln. Damit bleiben 200 Pixel über. Diese werden im Verhältnis der beiden Werte für weightx aufgeteilt. Angenommen Element A habe ein weightx von 0.75 und Element B ein weigtx von 0.25, so wird das Gitterfeld für A eine Breite von 450 Pixeln (300+0.75*200) und Gitterfeld B eine Breite von 150 (100+0.25*200) Pixeln erhalten.

Wird ergänzt…


Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007