Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.6.8

JSpinner



Abbildung 8.40: JSpinner
Abbildung 8.40

Neu in der Version [1.4]1.4 ist der JSpinner, typischerweise eine Komponente, die neben einem Eingabefeld zwei Buttons zum Erhöhen bzw. Erniedrigen des eingegebenen Wertes erlaubt.

JSpinner unterstützt von sich aus drei Models, die dabei die passenden Editoren mit setzt: SpinnerNumberModel für Zahlen, SpinnerDateModel für Datumsangaben und SpinnerListModel für eine Liste von beliebigen Daten. Die Editorkomponente ist in diesen Fällen ein JTextField, die mit dem entsprechenden Wert gefüllt wird.

Model

Definiert wird das Model durch die Klasse SpinnerModel, welches neben dem aktuellen Wert den nächsten bzw. den vorherigen liefert.

Bei Swing sind drei Models vorgegeben, die allesamt von AbstractSpinnerModel abgeleitet sind.

Editor

Passend zu den vordefinierten Models gibt es drei Editoren, die allesamt von JSpinner.DefaultEditor abgeleitet sind und automatisch beim Einstellen des Models gesetzt werden. Die Editierkomponente ist in den drei Fällen ein JFormatedTextField:

Beispiel

  // Hier soll das Geburtsdatum von Personen >= 18 Jahre
  // abgefragt werden
  
  // Wir gehen von einem Standard-Alter von 50 Jahren aus
  final Calendar standardWert = Calendar.getInstance();
  standardWert.add(Calendar.YEAR, -50);
  
  // Der älteste Mensch darf 120 Jahre alt sein
  final Calendar von = Calendar.getInstance();
  von.add(Calendar.YEAR, -120);
  
  // Eine Person darf nicht unter 18 Jahre alt sein
  final Calendar bis = Calendar.getInstance();
  bis.add(Calendar.YEAR, -18);
  
  // Spinner, mit standardWert als Startwert;
  // Geburtsdatum zwischen jetzt minus 120 und 18 Jahren;
  // beim Druck auf die Pfeil-Buttons wird ein Jahr
  // addiert bzw. subtrahiert
  javax.swing.JSpinner spinner = new javax.swing.JSpinner(
    // Konstuktor mit
    // dem aktuellen Zeitpunkt,
    // dem minimalen Wert,
    // dem maximalen Wert und
    // den Wert für die Addition bzw. Subtraktion
    new SpinnerDateModel(standardWert.getTime(),
                         von.getTime(),
                         bis.getTime(),
                         Calendar.YEAR));
    spinner.setEditor(new javax.swing.JSpinner.DateEditor(
                                  spinner, "dd.MM.yyyy"));


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.