next up previous contents index
Next: Inhalt Up: Grafische Benutzungsschnittstellen Previous: Menüs

Layout Manager

 

Jeder Container hat einen Standard Layout Manager, der dafür zuständig ist, die enthaltenen Komponenten anzuordnen. Dieser voreingestellte Layout Manager kann durch einen anderen ersetzt werden.

Das AWT bietet:

Beispiel

Zuordnung eines Layout-Managers zu einem Container:

   meinContainer.setLayout(new CardLayout());

BorderLayout

 

Anordnung der Komponenten an den vier Rändern und in der Mitte.

tex2html_wrap2673

import java.awt.*;
     import java.applet.Applet;
     public class buttonDir extends Applet {
       public void init() {
         setLayout(new BorderLayout());
         add("North",  new Button("North"));
         add("South",  new Button("South"));
         add("East",   new Button("East"));
         add("West",   new Button("West"));
         add("Center", new Button("Center"));
       }
     }

CardLayout

 

Überlagerung der Komponenten.

tex2html_wrap2675

  cards = new Panel();
  cards.setLayout(new CardLayout());
  ...// Erzeuge Panel p1 mit Knöpfen
  ...// Erzeuge Panel p1 mit Textfeld
  cards.add("Panel with Buttons", p1);
  cards.add("Panel with TextField", p2);

Die Strings dienen zur Identifikation der Karten. Das Umschalten zwischen sich verdeckenden Karten muß man ausprogrammieren, z.B.:

  (CardLayout)cards.getLayout()).
       show(cards,"Panel with TextField");

FlowLayout

 

Komponenten der Reihe nach angeordnet.

tex2html_wrap2677

  setLayout(new FlowLayout());
  setFont(new Font("Helvetica", 
                    Font.PLAIN, 14));
  add(new Button("Button 1"));
  add(new Button("2"));
  add(new Button("Button 3"));
  add(new Button("Long-Named Button 4"));
  add(new Button("Button 5"));

Durch Konstruktorargument kann angegeben werden, ob die Komponenten innerhalb einer Zeile zentriert (Default), rechts- oder linksbündig angeordnet werden.

GridLayout

 

Komponenten in einem Matrix-Raster.

tex2html_wrap2679

  // Beliebigviele Reihen, 2 Spalten
  setLayout(new GridLayout(0,2));
  add(new Button("Button 1"));
  add(new Button("2"));
  add(new Button("Button 3"));
  add(new Button("Long-Named Button 4"));
  add(new Button("Button 5"));

GridBagLayout

 

Komponenten in einem flexiblen Matrix-Raster. Mächtigster aber auch kompliziertester Layout Manager:

  tex2html_wrap2681

Das Layout wird durch GridBagConstraints spezifiziert:

  GridBagLayout gridbag = new GridBagLayout();
  GridBagConstraints c = new GridBagConstraints();
  setLayout(gridbag);

 //...Nach Setzen der Attribute von c:
 add(irgendeineKomponente, c);

Die wichtigsten Attribute von GridBagConstraints sind:

Die Knöpfe 8 und 9 der Oberfläche (Seite gif) wurden z.B. wie folgt erzeugt:

  GridBagLayout griba = new GridBagLayout();
  GridBagConstraints c = 
                 new GridBagConstraints();
  setLayout(griba);
           
  c.fill = GridBagConstraints.BOTH;

  c.gridwidth = 1;
  c.gridheight = 2;
  c.weighty = 1.0;
  add(new Button("Button8"), c);

  c.weighty = 0.0; 
  c.gridwidth = 
  GridBagConstraints.REMAINDER; 
  c.gridheight = 1;

  add(new Button("Button9"), c);

 


next up previous contents index
Next: Inhalt Up: Grafische Benutzungsschnittstellen Previous: Menüs

Peter Pfahler, 1997