Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 

22.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, mit der der auslösende Scrollbar bestimmt werden kann, und getValue, mit der der aktuelle Wert des Schiebereglers bestimmt werden kann. Zusätzlich gibt es die Methode getAdjustmentType, die Auskunft darüber gibt, welche Benutzeraktion zur Auslösung des Ereignisses führte. Tabelle 22.1 listet die möglichen Konstanten auf, die von getAdjustmentType zurückgegeben werden können, und beschreibt ihre Bedeutung.

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

Tabelle 22.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("South",hsb);
037    Scrollbar vsb=new Scrollbar(Scrollbar.VERTICAL,  1,10,1,100);
038    vsb.addAdjustmentListener(this);
039    panel.add("East",vsb);
040 }
Scrollbar.inc
Listing 22.15: Verwendung von Scrollbars

 Beispiel 

Abbildung 22.10: Ein Dialog mit zwei Schiebereglern


 Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com