15.23 JSpinner
Ein JSpinner ist ein Eingabefeld (Editor) mit zwei kleinen Pfeilen, die eine Veränderung der Werte erlauben. Entweder trägt der Nutzer in das Textfeld eine gültige Zahl ein, die mit den Pfeilen verändert werden kann, oder eine Liste von Auswahlelementen wird angezeigt, aus denen der Benutzer wählen kann. Am nächsten sind Combo-Boxen mit Spinnern verwandt, jedoch hat eine JSpinner-Komponente den Vorteil, dass kein Popup-Menü aufgeht.
Ein JSpinner arbeitet auf einem Modell vom Typ SpinnerModel, welches sequenziellen Zugriff auf die Elemente ermöglicht. Ein vorgefertigtes Modell ist das SpinnerListModel, welches mit einem Feld initialisiert wird. Das Modell wird dann im Konstruktor von JSpinner gesetzt.
Beispiel Erfrage alle Wochentage über die Klasse DateFormatSymbols. Das Feld von Zeichenfolgen soll dann ein SpinnerModel initialisieren. Dieses Modell soll dem JSpinner im Konstruktor übergeben werden.
String days[] = new DateFormatSymbols().getWeekdays();
SpinnerModel model = new SpinnerListModel( days );
JSpinner spinner = new JSpinner( model );
|
Ein weiteres Modell ist das SpinnerDateModel. Es erlaubt dem Benutzer lokalisierte Datumseingaben. Der JSpinner zeigt dann die Eingabezeile an, und das Modell speichert die Benutzereingabe und bietet Anfragemethoden, um das gewählte Datum abzufragen.
Beispiel Initialisiere den JSpinner mit einem SpinnerDateModel und erfrage das gesetzte Datum.
SpinnerDateModel model = new SpinnerDateModel();
JSpinner spinner = new JSpinner( model );
Date value = model.getDate();
|
Der Konstruktor SpinnerDateModel(Date value, Comparable start, Comparable end, int stepSize) erlaubt die Angabe eines Start- und eines Enddatums. Sie können null sein, wenn keine Grenzen gewünscht sind. Die Variable stepSize gibt an, welches Format zu editieren ist. Dahinter stehen viele Konstanten aus Calendar wie etwa YEAR, HOUR oder WEEK_OF_MONTH.
Hier klicken, um das Bild zu Vergrößern
Listing 15.30 JSpinnerDemo.java
import java.awt.*;
import javax.swing.*;
public class JSpinnerDemo
{
public static void main( String args[] )
{
JFrame f= new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Container c = f.getContentPane();
c.setLayout( new BoxLayout(c, BoxLayout.Y_AXIS) );
// Nummern-Spinner für Werte von 1 to 10, in 0,2 Schritte
SpinnerNumberModel model1 = new SpinnerNumberModel( 5.0, 0.0, 10.0, 0.2 );
JSpinner spin1 = new JSpinner( model1 );
c.add( spin1 );
// Spinner mit einem SpinnerListModel mit Komikern
String comedians[] = {
"Joseph Hader", "Charlie Chaplin", "Vicco von Bülow",
"Heinz Erhardt", "Michael Mittermeier" };
SpinnerListModel model2 = new SpinnerListModel( comedians );
JSpinner spin2 = new JSpinner( model2 );
c.add( spin2 );
f.pack();
f.show();
}
}
|