Kelas SpinnerDateModel digunakan untuk menampilkan urutan tanggal (date) di obyek spinner. Dari tabel konstruktor dibawah ini, batasan urutan tanggal atas dan bawah ditentukan oleh parameter start dan end. Kedua parameter ini dapat bernilai null, artinya urutan tanggal yang ditampilkan tidak mempunyai batasan baik atas maupun bawah. Kenaikan dan penurunan perubahan tanggal ditentukan oleh parameter calendarField, sedangkan tanggal saat ini yang ditampilkan oleh obyek spinner ditentukan oleh parameter value. Anda dapat mengakses nilai saat ini dengan menggunakan metoda getValue.

Tabel konstruktor kelas SpinnerDateModel
Konstruktor Keterangan
SpinnerDateModel() Mengkonstruksi obyek SpinnerDateModel tanpa mempunyai batasan atas maupun bawah dimana nilai awal yang ditampilkan adalah tanggal saat ini dan parameter calendarField sama dengan Calendar.DAY_OF_MONTH.
SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField) Mengkonstruksi obyek SpinnerDateModel dengan menentukan tanggal hari ini, batasan atas dan bawah serta kenaikan atau penurunan.

Nilai yang dikembalikan metoda getValue adalah tipe kelas java.util.Calendar. Anda terlebih dahulu harus mengkonversi ke tipe yang bersesuaian. Misalnya, apabila nilai yang dikembalikan oleh metoda getValue akan simpan di variabel dengan tipe kelas String, maka nilai tersebut harus dikonversi terlebih dahulu ke bentuk string. Apabila variabel yang akan digunakan untuk menyimpan nilai dideklarasikan dengan tipe java.util.Calendar, maka tidak diperlukan pengkonversian.

Contoh program sederhana berikut ini menggunakan kelas SpinnerDateModel untuk menampilkan tanggal di obyek spinner. Untuk merubah tanggal selain tanggal hari ini, pengguna program dapat mengklik salah satu dari dua anak panah kecil yang berada di posisi sebelah kanan.

// Nama file : DemoSpinnerDateModel.java
// Mendemonstrasikan penggunaan kelas SpinnerDateModel

// Mengimpor kelas
import javax.swing.*;
import java.awt.*;
import java.util.*;

// Mendeklarasikan kelas DemoSpinnerDateModel
public class DemoSpinnerDateModel extends JFrame {

   private JSpinner spinner;
   private SpinnerDateModel dateModel;
   private JSpinner.DateEditor dateEditor;
   private Font font;

   // Konstruktor tanpa argumen
   public DemoSpinnerDateModel() {

      font = new Font("Times New Roman", Font.BOLD, 18);

      dateModel = new SpinnerDateModel();
      spinner = new JSpinner(dateModel);
      dateEditor = new JSpinner.DateEditor(spinner, "dd MMMM yyyy");
      spinner.setEditor(dateEditor);
      spinner.setFont(font);

      getContentPane().add(spinner);
   }

   // Metoda main
   public static void main(String[] args) {
      DemoSpinnerDateModel frame = new DemoSpinnerDateModel();
      frame.setTitle("Kelas DemoSpinnerDateModel");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(180, 90);
      frame.setVisible(true);
   }
}

Menggunakan spinner model kelas SpinnerDateModel

Obyek SpinnerDateModel dikonstruksi menggunakan konstruktor tanpa argumen (pernyataan baris nomor 22). Dengan konstruktor ini, obyek SpinnerDateModel tidak mempunyai batasan atas maupun bawah, dimana nilai awal yang ditampilkan adalah tanggal saat ini. Anda dapat menekan salah satu dari dua tombol anak panah yang ada untuk menentukan atau menyesuaikan dengan tanggal yang diinginkan.

Obyek dari kelas SpinnerDateModel kemudian digunakan sebagai argumen parameter konstruktor kelas JSpinner untuk membuat obyek spinner yang akan menampilkan tanggal (pernyataan baris nomor 23). Anda dapat menentukan pola elemen atau nilai model saat ini yang ditampilkan oleh obyek spinner (disini menggunakan pola “dd MMMM yyyy”). Pola tersebut dapat ditentukan dengan menggunakan editor dari kelas JSpinner. Editor tersebut didefinisikan sebagai static inner class di dalam kelas JSpinner. Berikut ini adalah sintak untuk menentukan pola menggunakan editor kelas JSpinner:

   JSpinner.DateEditor editor = new JSpinner.DateEditor(JSpinner spinner, String patern);

setelah pola tampilan ditentukan dengan menggunakan editor, Anda perlu mengatur agar obyek spinner menggunakan pola tersebut. Untuk maksud ini, Anda dapat menggunakan metoda setEditor seperti pernyataan di baris nomor 25.