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

## 32.10 Scrollbar

- 32.10 Scrollbar

Ein `Scrollbar` ist ein Schieberegler, der zur quasianalogen Anzeige und Eingabe eines Wertes 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 muß 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 Wertes, 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 Wertes 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, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de