Banner Java

Menggunakan Spinner Model Kelas SpinnerNumberModel

Kelas SpinnerNumberModel merupakan salah satu spinner model yang digunakan untuk menampilkan nilai numerik. Nilai numerik yang dihasilkan kelas ini adalah salah satu dari tipe Byte, Short, Integer, Long, Float atau Double. Tabel di bawah ini merupakan daftar kontruktor kelas SpinnerNumberModel untuk mengkonstruksi obyek kelas SpinnerNumberModel.

Tabel konstruktor kelas JSpinnerNumberModel
Konstruktor Keterangan
SpinnerNumberModel() Mengkonstruksi obyek SpinnerNumberModel yang mempunyai nilai tidak terbatas dengan tampilan nilai awal nol serta nilai kenaikan dan penurunan sebesar satu.
SpinnerNumberModel(int value, int minimum, int maximum, int stepSize) Mengkonstruksi obyek SpinnerNumberModel yang menampilkan data integer dengan tampilan nilai awal, batasan minimum dan maksimum serta nilai kenaikan dan penurunan ditentukan.
SpinnerNumberModel(double value, double minimum, double maximum, double stepSize) Mengkonstruksi obyek SpinnerNumberModel yang menampilkan data double dengan tampilan nilai awal, batasan minimum dan maksimum serta nilai kenaikan dan penurunan ditentukan.
SpinnerNumberModel(number value, comparable minimum, comparable maximum, number stepSize) Mengkonstruksi obyek SpinnerNumberModel yang mewakili rangkaian angka tertutup dari minimum ke maksimum.

Contoh program berikut ini mendemonstrasikan bagaimana membuat tiga obyek spinner yang menghasilkan nilai integer. Nilai integer dari ketiga obyek spinner ini digunakan sebagai argumen parameter dari konstruktor kelas Color. Konstruktor dari kelas Color yang mempunyai tiga parameter tipe integer (RGB color) berasal dari tiga obyek spinner yang kemudian digunakan untuk merubah warna latar belakang dari obyek panel.

// Nama file : DemoSpinnerNumberModel.java
// Mendemonstrasikan penggunaan kelas SpinnerNumberModel

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

// Deklarasi kelas
public class DemoSpinnerNumberModel extends JFrame {

   // Deklarasi Variabel
   private JSpinner spnRed, spnGreen, spnBlue;
   private SpinnerNumberModel spnNumberRed, spnNumberGreen, spnNumberBlue;
   private int intRed, intGreen, intBlue;
   private JPanel panel, panel2;

   // Konstruktor tanpa argumen
   public DemoSpinnerNumberModel() {

      // Membuat obyek spinner dan panel
      spnNumberRed = new SpinnerNumberModel(255, 0, 255, 1);
      spnRed = new JSpinner(spnNumberRed);

      spnNumberGreen = new SpinnerNumberModel(175, 0, 255, 1);
      spnGreen = new JSpinner(spnNumberGreen);

      spnNumberBlue = new SpinnerNumberModel(175, 0, 255, 1);
      spnBlue = new JSpinner(spnNumberBlue);

      panel = new JPanel();

      // Menampilkan warna awal jingga tua (Color(255, 175, 175)) pada obyek panel
      intRed = (Integer) spnRed.getValue();
      intGreen = (Integer) spnGreen.getValue();
      intBlue = (Integer) spnBlue.getValue();
      panel.setBackground(new Color(intRed, intGreen, intBlue));

      panel2 = new JPanel();
      panel2.setLayout(new GridLayout(3, 2));
      panel2.add(new JLabel(" RGB Color | Red"));
      panel2.add(spnRed);
      panel2.add(new JLabel(" RGB Color | Green"));
      panel2.add(spnGreen);
      panel2.add(new JLabel(" RGB Color | Blue"));
      panel2.add(spnBlue);
      panel2.setBorder(new TitledBorder("RGB Spinners"));

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

      spnRed.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent ce) {
            changePanelBackground();
         }
      });

      spnGreen.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent ce) {
            changePanelBackground();
         }
      });

      spnBlue.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent ce) {
            changePanelBackground();
         }
      });
   }

   // Merubah warna panel menyesuaikan nilai-nilai spinner
   private void changePanelBackground() {
      intRed = (Integer) spnRed.getValue();
      intGreen = (Integer) spnGreen.getValue();
      intBlue = (Integer) spnBlue.getValue();
      panel.setBackground(new Color(intRed, intGreen, intBlue));
   }

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

Pernyataan baris nomor 24 dan 25 digunakan untuk membuat obyek spinner spnRed yang menampilkan nilai integer dengan rentang nilai 0 – 255 dengan nilai awal yang ditampilkan adalah 255. Demikian pula dengan pernyataan baris nomor 27, 28 dan 30, 31 yang masing-masing digunakan untuk membuat obyek spinner spnGreen dan spnBlue. Dua obyek spinner terakhir mempunyai rentang nilai sama dengan spnRed, hanya saja nilai awal yang ditampilkan kedua obyek adalah 175. Baris nomor 33 adalah pernyataan untuk mengkonstruksi obyek panel. Warna background obyek panel ini akan berubah tergantung nilai integer yang tersimpan di ketiga obyek spinner.

Baris nomor 36 – 39 adalah pernyataan untuk merubah warna obyek panel saat program pertama kali ditampilkan. Pertama-tama nilai ketiga obyek panel diambil dan kemudian disimpan di variabel integer intRed, intGreen dan intBlue. Sebagaimana yang telah dijelaskan sebelumnya, karena nilai yang dikembalikan oleh metoda getValue adalah dari tipe kelas Object, Anda perlu mengkonversi ke tipe integer. Ketiga nilai integer hasil konversi tersebut digunakan sebagai argumen parameter saat mengkonstruksi obyek dari kelas Color. Obyek kelas Color kemudian digunakan sebagai argumen parameter dari metoda setBackground.

Blok pernyataan baris nomor 54 – 58, 60 – 64 dan 66 – 70 digunakan untuk menangani change event yang dipicu oleh ketiga obyek spinner (spnRed, spnGreen dan spnBlue). Masing-masing blok penanganan event ini akan memanggil metoda changePanelBackground. Metoda changePanelBackground pada intinya akan dipanggil apabila nilai salah satu dari ketiga obyek panel berubah. Penjelasan setiap pernyataan yang ada di blok metoda tersebut serupa dengan penjelasan yang diberikan di pernyataan baris nomor 36 – 39.

Menggunakan spinner model kelas SpinnerNumberModel

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.