IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Java - Java Swing: Schieberegler



Java Swing: Schieberegler

Java Swing bietet mit der Klasse JSlider einen Schiebebalken an womit man leicht Einstellungen vornehmen kann.


Autor: Patrick Faes (dreamer)
Datum: 11-09-2007, 10:30:43
Referenzen: siehe Text
Schwierigkeit: Fortgeschrittene
Ansichten: 18476x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



1. Einführung

Mit der Klasse JSlider bietet Java eine benutzerfreundliche Möglichkeit an bestimmte Einstellungen vornehmen zu können. Es handelt sich dabei um einen Schieberegler den der Benutzer zwischen einen Minimal- und Maximalwert hin verschieben kann.

Ein Beispiel davon zeigt folgende Grafik:



Darstellung kann leicht unterschiedlich sein

Dies kann nützlich sein um z.B. Lautstärke, Bildgeschwindigkeit oder Lichtstärke einzustellen.

Dieser Artikel möchte die Anwendung dieser Klasse erläutern, erhebt dabei aber nie den Anspruch vollständig zu sein. Eher sollte das praktisch relevante kategorisiert dargestellt werden.


2. Einen Schieberegler erstellen

Um einen Schieberegler erstellen zu können, muss zuerst die Klasse JSlider importiert werden:
import javax.swing.JSlider;
Danach wird der Konstruktor aufgerufen:
JSlider slider = new JSlider();
In diesem Beispiel werden keine Argumente am Konstruktor gegeben. Es gibt auch Varianten wobei z.B. die Minimal- und Maximalwerte am Konstruktor übergeben werden, wodurch diese nicht separat eingestellt werden müssen. Alle Konstruktoren hier zu erwähnen während gleich die einzelnen Methoden der Klasse erläutert werden, könnte meiner Ansicht nach verwirrend sein. Deshalb verweise ich auf die Referenzen für die verschiedenen Konstruktor-Varianten.


3. Die Werte des Schiebereglers einstellen

Ein Schieberegler macht ja keinen Sinn wenn keine Werte definiert worden sind. Ein Schieberegler hat dabei drei verschiedene Werte:
  1. ein Minimalwert
  2. ein Maximalwert
  3. ein Anfangswert
Der Minimalwert steht am Anfang und der Maximalwert am Ende des Schiebereglers. Der voreingestellte Wert ist der den der Schieberegler hat wenn das Programm gestartet wird und der Anwender also noch nichts geändert hat. Gesagt muss sein dass die Größe des Schiebereglers von dessem Wertebereich nicht beeinflusst wird.

Die Werte können eingestellt werden mittels respektive die Methoden setMinimum(), setMaximum() und setValue() (wobei mit setValue() jederzeit den Wert geändert werden kann). Die Werte werden als Ganzzahlen übergeben. Dies können auch negative Werte (z.B. -30) sein.
slider.setMinimum(0);    //stellt den Minimalwert auf 0 ein
slider.setMaximum(150);  //stellt den Maximalwert auf 150 ein
slider.setValue(68);     //selektiert den Wert 68
Werden keine Minimal- und Maximalwerte eingestellt, so sind diese automatisch 0, bzw. 100. Wird anfangs kein Wert selektiert, so wird der Schieberegler immer in der Mitte gesetzt (und ist also die Hälfte des Maximalwerts selektiert). Wenn ein Wert selektiert werden soll der kleiner als der Minimumwert oder größer als der Maximumwert ist, dann wird automatisch der Minimum-, bzw. Maximumwert selektiert.

Diese Werte können später wieder ausgelesen werden mit die Methoden getMinimum(), getMaximum() und getValue(). Diese liefern jeweils die gefragten Werte als Ganzzahl (Integer) zurück.
slider.getMinimum();  //gibt den Minimalwert zurück
slider.getMaximum();  //gibt den Maximalwert zurück
slider.getValue();    //gibt den selektierten Wert zurück


4. Das Verhalten des Schiebereglers bestimmen

Sie haben in den vorherigen Beispielen gesehen das in regelmäßigen Abständen Markierungen und Zahlen angezeigt werden, die so genannte Anzeigeskala. Diese Abstände lassen sich auch bestimmen. Dabei können zwei Abstände bestimmt werden: die großen Abstände (das so genannte Großraster, wo die Abstände mit einem Großen Strich und einer Zahl angegeben werden) und die kleinen Abstände (das so genannte Feinraster, wo die Abstände einfach nur mit einem kleinen Strich angegeben werden).

Diese können mit den Methoden setMinorTickSpacing() und setMajorTickSpacing() bestimmt werden. Als Argument brauchen diese jeweils den Unterschied zwischen den einzelnen Anzeigen.
slider.setMinorTickSpacing(10); //Abstände im Feinraster
slider.setMajorTickSpacing(20); //Abstände im Großraster
In folgendem Beispiel werden für jede zwanzig Einheiten ein großer Strich gesetzt und für jede zehn Einheiten ein kleiner Strich.



Darstellung könnte leicht abweichen

Diese Eigenschaften dienen natürlich an erster Stelle der grafischen Darstellung, damit der Schieberegler einfacher zu handhaben ist. Jedoch kann somit auch eingestellt werden ob der Schieberegler an jeder willkürlichen Stelle platziert werden kann oder ob er automatisch zur nähesten Markierung versetzt werden soll.

Ein Beispiel könnte dies verdeutlichen: nehmen Sie mal an, wir hätten einen Schiebebalken wo jede fünf Werteinheiten ein Stricht vorkommt. Wenn der Zeiger (des Schiebebalken) auf Position 12 steht, so wird er automatisch auf Position 10 gesetzt. Wenn er dagegen auf Position 19 steht, wird er auf Position 20 versetzt.

Dieses verhalten kann mit der Methode setSnapToTicks() bestimmt werden. Als Argument wird ein so genannter Wahrheitswert (boolean) erwartet.
slider.setSnapToTick(true);   //aktiviert das automatische Versetzen
slider.setSnapToTick(false);  //deaktiviert das automatische Versetzen
Als letztes gibt es in dieser Kategorie die Methode setExtent(). Damit können Sie einen Bereich einstellen den der Zeiger überspringen soll wann der Anwender mit dem Mauszeiger links oder rechts neben dem Schieberegler klickt. Als Argument erwartet die Methode eine Ganzzahl die die Anzahl der zu überspringenden Werteinheiten des Schieberegler repräsentieren.
slider.setExtent(15); //der Zeiger verspringt jedesmal 15 Einheiten
Leider wurde festgestellt dass der Zeiger bei manchen LookAndFeel-Einstellungen falsch reagiert, bzw. der Zeiger ignoriert die Angabe oder macht den letzten Teil des Schiebereglers unzugänglich. Ich würde daher von der Verwendung dieser Methode ganz abraten.

Auch diese Eigenschaften können wieder ausgelesen werden. Dazu verwenden Sie folgende Methoden:
slider.getMinorTickSpacing();
slider.getMajorTickSpacing();
slider.getSnapToTick();
slider.getExtent();


5. Die Darstellung des Schiebereglers bestimmen

Swing bietet verschiedene Möglichkeiten die Darstellung eines Schiebereglers zu ändern. Als erstes gibt es da die Möglichkeiten den Schieberegler horizontal oder vertikal zu positionieren. Dies kann mit der Methode setOrientation() gemacht werden. Als Argument wird eines von zwei Konstanten der JSlider-Klasse erwartet: HORIZONTAL oder VERTICAL.
slider.setOrientation(JSlider.HORIZONTAL);    //stellt den Schieberegler horizontal auf
slider.setOrientation(JSlider.VERTICAL);      //stellt den Schieberegler vertikal auf
Das sieht dann so aus:



Darstellung könnte leicht abweichen

Die Normaleinstellung ist horizontal.

Es können noch weitere grafische Merkmale geändert werden, bzw. die Einstellung ob sie angezeigt werden sollen oder nicht.
  1. die Markierungen
  2. die numerische Angaben
  3. der Balken
Folgende Grafik könnte dies verdeutlichen:



Darstellung könnte leicht abweichen

Sie können so die Darstellung den eigenen Bedürfnissen anpassen. Ein Schieberegler für die Lautstärke z.B. braucht keine Markierungen oder Zahlen. Dafür reicht der Balken an sich. Wenn aber z.B. mit der Methode setSpanToTicks() bestimmt wird dass der Zeiger immer zur nähesten Markierung springen soll, dann könnten diese schon sehr nützlich sein. Die Zahlen könnten nützlich sein wenn z.B. die Länge eines bestellten Sandwiches eingestellt werden muss.

Achten Sie halt darauf dass Sie dem Anwender immer eine Möglichkeit geben den Schieberegler "lesen" zu können. Nehmen wir mal folgendes Beispiel:



Darstellung könnte leicht abweichen

Was das ist, fragen Sie? Das ist ein Schieberegler ohne alles. Wie Sie sehen also komplett unbrauchbar. Die Normaleinstellung ist ein sichtbarer Schiebebalken ohne Striche oder Zahlen.

Diese Eigenschaften können jeweils mit den Methoden setPaintTicks(), setPaintLabels() und setPaintTrack() eingestellt werden. Sie erwarten jeweils einen Wahrheitswert (boolean).
slider.setPaintTicks(true);    //Striche werden angezeigt
slider.setPaintLabels(false);  //Zahlen werden nicht angezeigt
slider.setPaintTrack(true);    //Balken wird angezeigt
Diese Eigenschaften können Sie auch wieder auslesen:
slider.getPaintTicks();
slider.getPaintLabels();
slider.getPaintTrack();
Vielleicht haben Sie schon bemerkt dass die Ausrichtung der Werte des Schiebereglers immer von links nach rechts, bzw. von unten nach oben läft, wie auf folgender Grafik demonstriert wird.



Darstellung könnte leicht abweichen

Natürlich können Sie dies auch umkehren, was dann so aussieht:



Darstellung könnte leicht abweichen

Dies machen Sie mit der Methode setInverted(). Als Argument geben Sie einen Wahrheitswert (boolean) mit.
slider.setInverted(true);  //Anzeige wird umgedreht
slider.setInverted(false);  //normale Anzeige
Auch diese Eigenschaft können Sie wieder auslesen.
slider.getInverted();

Komplette Übersicht der Klasse JSlider


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0