Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 32 - AWT-Dialogelemente

32.11 Scrollbar



Ein Scrollbar ist ein Schieberegler, der zur quasianalogen Anzeige und Eingabe eines Werts aus einem vorgegebenen Wertebereich verwendet werden kann. Der Schieberegler kann entweder horizontal oder vertikal angeordnet werden und besitzt einen Schieber, dessen Größe veränderlich ist. Der interne Wert eines Schiebereglers und die Anzeigeposition seines Schiebers sind untrennbar miteinander verbunden. Ändert der Anwender die Position des Schiebers, ändert sich automatisch auch sein interner Wert. Wird vom Programm der Wert verändert, führt dies auch zu einer Repositionierung des Schiebers.

public Scrollbar()

public Scrollbar(int orientation)

public Scrollbar(
   int orientation, int value, int visible,
   int minimum, int maximum
)
java.awt.Scrollbar

Der parameterlose Konstruktor erzeugt einen vertikalen Schieberegler. Mit dem Parameter orientation kann die Orientierung festgelegt werden. Hier kann eine der Konstanten Scrollbar.HORIZONTAL oder Scrollbar.VERTICAL angegeben werden.

Der dritte Konstruktor erlaubt die Angabe weiterer Eigenschaften. minimum und maximum spezifizieren die Grenzen des repräsentierten Wertebereichs. Die untere Grenze liegt bei einem vertikalen Schieberegler oben und bei einem horizontalen Schieberegler auf der linken Seite. Mit value kann der Anfangswert des Schiebers festgelegt werden.

Der Parameter visible dient dazu, die Seitengröße des Schiebers zu bestimmen. Diese muss kleiner als der Wertebereich des Schiebereglers sein. Die Seitengröße bestimmt einerseits die visuelle Größe des Schiebers und andererseits die Größe der Veränderung des Werts, wenn der Anwender auf die Schaltfläche zwischen Schieber und Button des Schiebereglers klickt.

Die Methoden der Klasse Scrollbar realisieren den Zugriff auf die Attribute des Schiebereglers. Die meisten von ihnen sind im Interface Adjustable definiert, das von Scrollbar implementiert wird. Mit getValue und setValue wird auf den aktuellen Wert des Schiebers zugegriffen, mit getMinimum und getMaximum auf die Grenzen des Wertebereichs und mit getVisibleAmount auf die Größe des Schiebers. Zusätzlich kann mit getUnitIncrement und setUnitIncrement sowie mit getBlockIncrement und setBlockIncrement auf die Parameter zugegriffen werden, die die Stärke der Veränderung des Werts beim Klicken auf die Buttons bzw. die Schaltfläche zwischen Schieber und Buttons bestimmen.

public int getValue()
public void setValue(int value)

public int getMinimum()
public int getMaximum()

public int getVisible()

public int getUnitIncrement()
public void setUnitIncrement(int l)

public int getBlockIncrement()
public void setBlockIncrement(int l)
java.awt.Scrollbar

Ein Scrollbar sendet Adjustment-Ereignisse an seine Ereignisempfänger. Diese müssen das Interface AdjustmentListener implementieren und sich durch Aufruf von addAdjustmentListener registrieren:

public void addAdjustmentListener(AdjustmentListener l)
java.awt.Scrollbar

Das Adjustment-Ereignis führt im Ereignisempfänger zum Aufruf der Methode adjustmentValueChanged, die ein AdjustmentEvent übergeben bekommt:

public abstract void adjustmentValueChanged(AdjustmentEvent e)
java.awt.event.AdjustmentListener

Dieses besitzt die Methoden getAdjustable und getValue. Mit der erstgenannten kann der auslösende Scrollbar, mit letzterer der aktuelle Wert des Schiebereglers bestimmt werden. Zusätzlich gibt es die Methode getAdjustmentType, die Auskunft darüber gibt, welche Benutzeraktion zur Auslösung des Ereignisses führte. Tabelle 32.1 listet die möglichen Konstanten auf, die von getAdjustmentType zurückgegeben werden können, und beschreibt ihre Bedeutung.

Konstante Bedeutung
UNIT_INCREMENT Der Wert wurde durch Klicken eines Buttons um eine Einheit erhöht.
UNIT_DECREMENT Der Wert wurde durch Klicken eines Buttons um eine Einheit vermindert.
BLOCK_INCREMENT Der Wert wurde durch Klicken der Schaltfläche zwischen Button und Schieber um eine Seite erhöht.
BLOCK_DECREMENT Der Wert wurde durch Klicken der Schaltfläche zwischen Button und Schieber um eine Seite vermindert.
TRACK Der Wert wurde durch Ziehen des Schiebers verändert.

Tabelle 32.1: Konstanten für Schieberegler-Ereignisse

Eine beispielhafte Implementierung von adjustmentValueChanged könnte etwa so aussehen:

001 /* Scrollbar.inc */
002 
003 public void adjustmentValueChanged(AdjustmentEvent event)
004 {
005   Adjustable sb = event.getAdjustable();
006   if (sb.getOrientation() == Scrollbar.HORIZONTAL) {
007     System.out.print("Horizontal: ");
008   } else {
009     System.out.print("Vertikal: ");
010   }
011   switch (event.getAdjustmentType()) {
012   case AdjustmentEvent.UNIT_INCREMENT:
013     System.out.println("AdjustmentEvent.UNIT_INCREMENT");
014     break;
015   case AdjustmentEvent.UNIT_DECREMENT:
016     System.out.println("AdjustmentEvent.UNIT_DECREMENT");
017     break;
018   case AdjustmentEvent.BLOCK_DECREMENT:
019     System.out.println("AdjustmentEvent.BLOCK_DECREMENT");
020     break;
021   case AdjustmentEvent.BLOCK_INCREMENT:
022     System.out.println("AdjustmentEvent.BLOCK_INCREMENT");
023     break;
024   case AdjustmentEvent.TRACK:
025     System.out.println("AdjustmentEvent.TRACK");
026     break;
027   }
028   System.out.println("  value: " + event.getValue());
029 }
030 
031 private void customizeLayout(Panel panel)
032 {
033    panel.setLayout(new BorderLayout());
034    Scrollbar hsb=new Scrollbar(Scrollbar.HORIZONTAL,1,10,1,100);
035    hsb.addAdjustmentListener(this);
036    panel.add(hsb, BorderLayout.SOUTH);
037    Scrollbar vsb=new Scrollbar(Scrollbar.VERTICAL,  1,10,1,100);
038    vsb.addAdjustmentListener(this);
039    panel.add(vsb, BorderLayout.EAST);
040 }
Scrollbar.inc
Listing 32.15: Verwendung von Scrollbars

Abbildung 32.10: Ein Dialog mit zwei Schiebereglern


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de