Literatur

JSlider

Die Klasse JSlider dient dazu, einen Schieberegler zu erzeugen. Dieses Steuerelement kennen Sie sicherlich z.B. von der Lautstärkeregulierung verschiedener Anwendungen. Schieberregler finden häufig dort Anwendung, wo man einen Wert aus einem größeren Wertbereich, der durch einen Minimal- und einen Maximalwert begrenzt ist, auswählen muss.

Der Wertebereich kann durch Teilstriche (engl. tick marks) untergliedert werden. Diese werden je nach Ausrichtung des JSliders unterhalb oder rechts neben der Schieberegler-Leiste angezeigt. Unterschieden werden dabei größere (major) und kleinere (minor) Markierungen, deren Abstände jeweils vorgegeben werden können. Außerdem können die Teilstriche beschriftet werden.

Neben dem Standardkonstruktor besitzt die Klasse JSlider fünf weitere Konstruktoren, die wir in folgender Tabelle kurz näher erläutern wollen.

Konstruktor Kurzbeschreibung
JSlider (int orientation) Hier wird ein JSlider erzeugt. Über den Parameter orientation gibt man die horizontale oder vertikale Ausrichtung vor. Dazu werden die zwei von javax.swing.SwingConstants geerbten statischen Konstanten VERTICAL u. HORIZONTAL verwendet.
JSlider (int orientation,  int min, int max, int value) Zusätzlich zur Ausrichtung (siehe oben) werden die min- und max-Werte als zweiter bzw. dritter Parameter übergeben. Der vierte Parameter gibt  außerdem an, bei welchem Wert sich der Schiebebalken aktuell befindet.
JSlider (BoundedRangeModel brm) Hier wird eine Referenz auf ein BoundedRangeModel-Objekt übergeben. Das BoundedRangeModel gibt die Rahmenbedingungen für den Wertebereich vor, so dass z.B. sichergestellt ist, dass der minimale Wert nicht größer sein kann als der maximale Wert. Um die Standardvorgaben zu ändern, kann auch eine eigene Modellklasse verwendet werden.
JSlider (int min, int max) Hier werden die min- und max-Werte als Parameter übergeben.
JSlider (int min, int max, int value) Hier werden sowohl die min- und max-Werte als auch der aktuelle Wert  als Parameter angegeben.

Nachfolgend möchten wir einen Großteil der Methoden der Klasse JSlider vorstellen:

Methode Kurzbeschreibung
void addChangeListener (ChangeListener l) Diese Methode fügt einen ChangeListener hinzu, der Veränderungen (Verschieben des Schiebebalkens) registriert, so dass entsprechend darauf reagiert werden kann.
Hashtable createStandardLabels (int increment) Eine Hashtable mit Standardbeschriftungen (Zahlen) wird erzeugt. Über den Parameter increment wird angegeben, nach wie vielen Teilmarkierungen (major tickmarks) eine Beschriftung gesetzt werden soll.
Hashtable createStandardLabels (int increment, int start) Wie oben, nur dass zusätzlich noch ein Startwert angegeben werden kann.
ChangeListener[] getChangeListeners ()       Hier wird ein Array mit allen ChangeListenern zurückgegeben, welche der JProgressBar hinzugefügt wurden.
Dictionary getLabelTable () Gibt ein Dictionary-Objekt (z.B. eine Hashtable) zurück, das die Werte und ihre zugehörigen Beschriftungen als Schlüssel-/Wertpaarungen beinhaltet.
int getMajorTickSpacing () Gibt den Abstand zwischen den größeren Markierungsstrichen zurück.
int getMaximum () Diese Methode liefert den maximalen Wert des Schiebereglers.
int getMinimum () Diese Methode liefert den minimalen Wert des Schiebereglers.
int getMinorTickSpacing () Gibt den Abstand zwischen den kleineren Markierungsstrichen zurück.
BoundedRangeModel getModel () Gibt das Datenmodell zurück, in dem die Grenzen für die Werte min, max, extend und value abgesteckt sind.
int getOrientation () Hier wird die Ausrichtung des Schiebereglers zurückgegeben (die Konstanten HORIZONTAL oder VERTICAL)
boolean getPaintLabels () Gibt an, ob die Beschriftungen angezeigt werden sollen.
boolean getPaintTicks () Gibt an, ob die Teilmarkierungen angezeigt werden sollen.
boolean getSnapToTicks () Gibt an, ob beim Verschieben des Reglers auf eine Stelle zwischen den Markierungen dieser auf der nächstliegenden Markierung eingerastet werden soll.
int getValue () Diese Methode liefert den Wert bzw. die Position, an der sich der Schieberegler aktuell befindet.
void removeChangeListener (ChangeListener l) Entfernt den angegebenen ChangerListener.
void setMajorTickSpacing (int n) Setzt den Abstand zwischen den größeren Teilmarkierungen.
void setMaximum (int max) Diese Methode setzt den maximalen Wert des Schiebereglers.
void setMinimum (int min) Diese Methode setzt den minimalen Wert des Schiebereglers.
void setMinorTickSpacing (int n) Setzt den Abstand zwischen den kleineren Teilmarkierungen.
void setModel (BoundedRangeModel newModel) Setzt das Datenmodell, das die Grenzen für die Werte min, max, extend und value absteckt.
void setOrientation (int orientation) Über diese Methode wird die Ausrichtung des JSliders festgelegt. Als Parameter werden die Konstanten VERTICAL und HORIZONTAL verwendet, die vom Interface SwingConstants geerbt wurden.
void setPaintLabels (boolean b) Hier wird festgelegt, ob die Beschriftungen angezeigt werden sollen. Standardmäßig ist die Anzeige der Beschriftungen deaktiviert.
void setPaintTicks (boolean b) Hier wird festgelegt, ob die Teilmarkierungen angezeigt werden sollen. Standardmäßig ist die Anzeige der Teilmarkierungen deaktiviert.
void setSnapToTicks (boolean b) Legt fest, ob der Schieberegler an der nächstgelegenen Markierung "einrasten" soll, wenn er an eine Stelle zwischen den Markierungsstrichen bewegt wurde.
void setValue (int v) Hier nimmt der Schieberegler den angegebenen Wert an.

 

Anschließend nun ein Beispiel, in dem wir uns einiger der oben vorgestellten Methoden bedienen:

 
import javax.swing.*;
 
public class JSliderBeispiel {
	public static void main(String[] args) {
		JFrame meinJFrame = new JFrame();
		meinJFrame.setSize(300, 100);
		meinJFrame.setTitle("JSlider Beispiel");
		JPanel meinPanel = new JPanel();
 
		// JSlider-Objekt wird erzeugt
		JSlider meinSlider = new JSlider();
 
		// Mindestwert wird gesetzt
		meinSlider.setMinimum(0);
		// Maximalwert wird gesetzt
		meinSlider.setMaximum(20);
 
		// Die Abstände zwischen den 
		// Teilmarkierungen werden festgelegt
		meinSlider.setMajorTickSpacing(5);
		meinSlider.setMinorTickSpacing(1);
 
		// Standardmarkierungen werden erzeugt 
		meinSlider.createStandardLabels(1);
 
		// Zeichnen der Markierungen wird aktiviert
		meinSlider.setPaintTicks(true);
 
		// Zeichnen der Labels wird aktiviert
		meinSlider.setPaintLabels(true);
 
		// Schiebebalken wird auf den Wert 9 gesetzt
		meinSlider.setValue(9);
 
		// Schiebebalken wird dem Panel hinzugefügt
		meinPanel.add(meinSlider);
 
		meinJFrame.add(meinPanel);
		meinJFrame.setVisible(true);
 
	}
}
 

Wir erzeugen einen Schiebebalken, der Werte von 0 bis 20 annehmen kann. Der Abstand zwischen den größeren Teilmarkierungen wird auf 5 festgelegt, der Abstand zwischen den kleineren Teilstrichen auf 1. 

Außerdem lassen wir Standardbeschriftungen erstellen, indem wir createStandardLabels aufrufen. Über den Parameter geben wir an, nach wie vielen Teilmarkierungen (hier sind die "major tickmarks" gemeint) ein Label gesetzt werden soll. Da wir den Wert 1 übergeben, wird der einfache Wert genommen, den wir mit setMajorTickSpacing gesetzt haben, in diesem Fall also 5.

Die Standardbeschriftung besteht aus einfachen Zahlen. Möchte man andere Labels, muss man eine eigene HashTable erzeugen, die die Werte und die entsprechenden Labels als Schlüssel/Wert-Kombinationen gegenüberstellt. Diese muss anschließend mit der Methode setLabelTable für den JSlider gesetzt werden.

Damit die Teilmarkierungen angezeigt werden, müssen wir setPaintTicks(true) aufrufen. Mit setPaintLabels(true) werden die Beschriftungen angezeigt.

Den Schiebebalken setzen wir zunächst auf den Wert 9. Anschließend fügen wir unseren JSlider dem Panel hinzu.

Dies sollte dann wie folgt aussehen:

JSlider Beispiel