Dies ist eine alte Version des Dokuments!


AWT

GridBagLayout

Again and again you hear that the GridBagLayout is so complicated. It is really very extensive, but as a general rule you only need a few methods. The GridBagLayout works fundamentally with a thought grid. Each array in this grid can be addressed by its position (x,y). To define the size of the grid, you can outline the desired layout on a piece of paper. With the class GridBagConstraints, the qualities of a single element are determined.



example
The desired dialogue:


The beyond lying grid:

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“. Um einem Control (hier der Liste) die Positions- und Größenangaben zuzuordnen, wird die Klasse GridBagConstraints verwendet.

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