Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.8.8

Das BoxLayout


Mit der Einführung von Swing wurden auch zwei neue Layout-Manager entwickelt: das BoxLayout und das SpringLayout, welche im Paket javax.swing zu finden sind.

Das BoxLayout wurde entwickelt, um ähnliche Ergebnisse wie beim GridBagLayout zu erhalten, ohne dessen Komplexität übernehmen zu müssen. Es ordnet Komponenten entlang einer vorgegebenen Linie an, wobei folgende Möglichkeiten zur Verfügung stehen:

Das BoxLayout versucht, die Komponenten gemäß der preferredSize anzuordnen. Füllen die Komponenten nicht den gesamten zur Verfügung stehenden Platz aus, wird die Ausrichtung durch das alignmentX bzw. alignmentY der Komponenten bestimmt. Dieser Wert kann über die Methoden setAlignmentX(float alignment) bzw. setAlignmentY(float alignment) eingestellt werden. Der Wert darf zwischen dem Bereich 0.0f und 1.0f liegen, wobei die folgenden Konstanten verwendet werden können:

Um die Verwendung des BoxLayout zu vereinfachen, gibt es die Klasse Box, die eine Komponente mit einem BoxLayout darstellt. Kombiniert man verschiedene Box Container miteinander, kann man schnell ansprechende Oberflächen erstellen.

Neben den oben erwähnten Möglichkeiten des BoxLayouts bietet die Box drei Konstrukte, um unsichtbare Komponenten zur Ausrichtung zu verwenden:

Abbildung 8.63: Unsichtbare Komponenten bei BoxLayout
Abbildung 8.63

Abbildung 8.64: Beispiel für das BoxLayout
Abbildung 8.64

  getContentPane().setLayout (new BorderLayout());
  
  Box box = Box.createVerticalBox();
  JLabel label = new JLabel("Auswahl");
  box.add(label);
  label.setAlignmentY(Component.LEFT_ALIGNMENT);
  label.setAlignmentX(Component.LEFT_ALIGNMENT);
  box.add(Box.createVerticalStrut(5));
  JScrollPane scrollPane = new JScrollPane(
     new JList(new String[] {
       "Äpfel","Orangen","Birnen","Bananen"
       }));
  scrollPane.setAlignmentX(LEFT_ALIGNMENT);
  box.add(scrollPane);
  box.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
  getContentPane().add(box, BorderLayout.CENTER);
  
  box = Box.createHorizontalBox();
  box.add(Box.createHorizontalGlue());
  JButton okButton = new JButton("Ok");
  getRootPane().setDefaultButton(okButton);
  box.add(okButton);
  box.add(Box.createHorizontalStrut(5));
  box.add(new JButton("Cancel"));
  box.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
  getContentPane().add(box, BorderLayout.SOUTH);


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.