Banner Java

Menggunakan Spinner Model Kelas SpinnerListModel

Kelas JSpinner merupakan salah satu komponen grafis Java yang digunakan sebagai input data (baca artikel Mengenal kelas JSpinner Di Pemrograman Java). Standarnya, obyek spinner akan menampilkan input berupa nilai angka (tipe data primitif). Namun apabila diinginkan, Anda juga bisa menampilkan input berupa obyek lain seperti nama hari atau bulan (tipe string dari kelas String) menggunakan spinner model. Spinner model terdiri dari tiga kelas konkrit yang salah satunya adalah kelas SpinnerListModel. Kelas SpinnerListModel merupakan kelas turunan dari kelas abstrak AbstrakSpinnerModel yang mengimplementasi interface SpinnerModel.

Kelas SpinnerListModel digunakan untuk menampilkan rangkaian nilai string di obyek spinner misalnya nama hari, bulan, jenjang pendidikan dan sebagainya. Nilai string di obyek dari kelas SpinnerListModel disimpan di dalam kelas java.util.List. Artikel ini tidak membahas kelas java.util.List. Anda dapat memperoleh keterangan atau penjelasan detil mengenai kelas ini dengan mengunjungi situs-situs yang mengulas Java. Tabel di bawah ini merupakan daftar kontruktor kelas SpinnerListModel yang digunakan untuk mengkonstruksi obyek SpinnerListModel.

Tabel konstruktor kelas JSpinnerListModel
Konstruktor Keterangan
SpinnerListModel() Mengkonstruksi obyek SpinnerListModel dengan nilai berupa string kosong.
SpinnerListModel(List value) Mengkonstruksi obyek SpinnerListModel dengan nilai string yang tersimpan di list.
SpinnerListModel(Object[] value) Mengkonstruksi obyek SpinnerListModel dengan nilai string yang tersimpan di larik.

Contoh program berikut ini mendemonstrasikan bagaimana membuat obyek spinner yang menampilkan obyek string warna. Spinner dapat memicu change event ketika salah satu dari dua anak panah kecil diklik untuk menavigasi nilai spinner. Ketika nilai obyek spinner berubah, warna latar belakang (background) dari obyek panel akan berubah menyesuaikan nilai string warna yang ditampilkan obyek spinner.

// Nama file : DemoSpinnerListModel.java
// Mendemonstrasikan penggunaan kelas SpinnerListModel

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

public class DemoSpinnerListModel extends JFrame {

   private JSpinner spinner;
   private SpinnerModel spinnerListModel;
   private JPanel panel;

   public DemoSpinnerListModel() {

      // Membuat larik warna
      String[] warna = {"Yellow", "Magenta", "Green", "Cyan”, "Orange", "Blue",
         "Pink", "Red", "Black"};

      // Membuat spinner dengan nilai yang tersimpan di list
      spinnerListModel = new SpinnerListModel(warna);
      spinner = new JSpinner(spinnerListModel);

      // Merubah warna panel menyesuaikan nilai spinner awal
      panel = new JPanel();
      spinner.setValue(new String("Yellow"));
      panel.setBackground(Color.YELLOW);

      getContentPane().add(spinner, BorderLayout.PAGE_START);
      getContentPane().add(panel, BorderLayout.CENTER);

      // Menangani event yang dipicu obyek spinner
      spinner.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent ce) {

            String strWarna = (String) spinner.getValue();
            if (strWarna == "Yellow")
               panel.setBackground(Color.YELLOW);
            else if (strWarna == "Magenta")
               panel.setBackground(Color.MAGENTA);
            else if (strWarna == "Green")
               panel.setBackground(Color.GREEN);
            else if (strWarna == "Cyan")
               panel.setBackground(Color.CYAN);
            else if (strWarna == "Orange")
               panel.setBackground(Color.ORANGE);
            else if (strWarna == "Blue")
               panel.setBackground(Color.BLUE);
            else if (strWarna == "Pink")
               panel.setBackground(Color.PINK);
            else if (strWarna == "Red")
               panel.setBackground(Color.RED);
            else
               panel.setBackground(Color.BLACK);
         }
      });
   }

    public static void main(String[] args) {
       DemoSpinnerListModel frame = new DemoSpinnerListModel();
       frame.setTitle("Kelas DemoSpinnerListModel");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(280, 150);
       frame.setVisible(true);
   }
}

Baris nomor 18 adalah pernyataan untuk mendeklarasikan larik warna yang mempunyai sembilan nilai string yang mewakili nama warna berbeda. Obyek larik warna tersebut dijadikan sebagai argumen parameter konstruktor kelas SpinnerListModel. Obyek spinner list model yang telah dikonstruksi, kemudian digunakan sebagai argumen dari parameter konstruktor kelas JSpinner yang menampilkan daftar (list) nama-nama warna (baris nomor 22 dan 23).

Baris nomor 27 adalah pernyataan untuk menentukan sebuah warna yang akan ditampilkan oleh spinner pertama kali. Anda dapat menggunakan metoda setValue dari kelas JSpinner. Karena metoda ini mempunyai parameter dari tipe kelas Object, maka argumen yang diberikan harus dalam bentuk obyek. Anda tentu masih ingat bahwa string adalah tipe acuan. Semua kelas konkrit di Java dapat dikonstruksi untuk dijadikan sebagai obyek kelas tersebut. Kelas juga dijadikan sebagai tipe suatu variabel yang disebut dengan tipe acuan, termasuk di sini adalah kelas String. Nilai string warna yang ditampilkan kemudian digunakan sebagai acuan untuk menentukan warna latar belakang dari obyek panel yang sebelumnya sudah dikonstruksi dengan memberi argumen berupa konstanta warna yang bersesuaian di metoda setBackground.

Blok pernyataan baris nomor 34 – 57 digunakan untuk menangani change event yang dipicu ketika salah satu dari dua anak panah di obyek spinner diklik untuk merubah nilai string yang sedang ditampilkan. Anda dapat menggunakan metoda getValue kelas JSpinner untuk mendapatkan nilai yang ditampilkan. Karena hasil pengembalian metoda getValue merupakan tipe kelas Obyek, maka nilai tersebut harus dikonversi terlebih dahulu (casting) ke bentuk string sebelum disimpan di variabel strWarna. Nilai string yang tersimpan di variabel strString digunakan sebagai acuan untuk merubah warna background dari obyek panel di penyeleksian if else.

Menggunakan spinner model kelas SpinnerListModel

Baca artikel terkait lainnya:

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.