Banner Java

Contoh Program Java: Menggunakan Kelas JSplitPane

Di artikel Mengenal Kelas JSplitPane Di Pemrograman Java, Anda diperkenalkan pada kelas JSplitPane termasuk tabel daftar konstruktor dan metoda yang sering digunakan. Di artikel kali ini, Anda diberikan contoh program Java terkait penggunaan kelas JSplitPane. Di contoh program ini, komponen yang terletak di sebelah kiri terdiri dari obyek label (kelas JLabel) dan obyek text field (kelas JTextField) yang disusun terlebih dulu di obyek panel (kelas JPanel). Komponen sebelah kanan adalah tombol (button) dari kelas JButton untuk menampilkan warna, sedangkan komponen paling bawah adalah tombol (kelas JButton) berlabel yang dapat memicu action event untuk menghasilkan susunan warna RGB baru. Setiap kali tombol ini diklik, warna baru akan ditampilkan tergantung ketiga nilai random yang terletak di obyek-obyek text field.

// Nama file : DemoSplitPane.java
// Menggunakan split pane di aplikasi warna sederhana

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

//Deklarasi kelas
public class DemoSplitPane extends JFrame {

   private JTextField redField, greenField, blueField;
   private JLabel redLabel, greenLabel, blueLabel;
   private JButton btnColor, btnChangeColor;
   private JSplitPane horSplitPane, verSplitPane;

   // Data field ini mempunyai default value masing-masing 0
   private int redValue, greenValue, blueValue;

   // Kontruktor DemoSplitPane
   public DemoSplitPane() {
   
      Font font = new Font("Tahoma", Font.PLAIN + Font.BOLD, 12);
      redField = new JTextField("" + redValue, 6);
      redField.setHorizontalAlignment(JTextField.RIGHT);
      redField.setEditable(false);
      redField.setFont(font);
      greenField = new JTextField("" + greenValue, 6);
      greenField.setHorizontalAlignment(JTextField.RIGHT);
      greenField.setEditable(false);
      greenField.setFont(font);
      blueField = new JTextField("" + blueValue, 6);
      blueField.setHorizontalAlignment(JTextField.RIGHT);
      blueField.setEditable(false);
      blueField.setFont(font);

      redLabel = new JLabel("RED");
      greenLabel = new JLabel("GREEN");
      blueLabel = new JLabel("BLUE");

      // Meletakkan text field dan label ke panel
      JPanel panel = new JPanel();
      panel.setLayout(new GridLayout(3, 2, 4, 0));
      panel.setBorder(new TitledBorder("RGB Color"));
      panel.add(redLabel);
      panel.add(redField);
      panel.add(greenLabel);
      panel.add(greenField);
      panel.add(blueLabel);
      panel.add(blueField);

      btnColor = new JButton();
      btnColor.setBackground(new Color(redValue, greenValue, blueValue));

      // Meletakkan panel btnColor secara horizontal
      horSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
      horSplitPane.setLeftComponent(panel);
      horSplitPane.setRightComponent(btnColor);
      horSplitPane.setOneTouchExpandable(true);

      btnChangeColor = new JButton("Tekan tombol ini untuk menghasilkan warna baru");

      // Meletakkan horSplitPane dan btnChangedColor secara vertikal
      verSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true);
      verSplitPane.setTopComponent(horSplitPane);
      verSplitPane.setBottomComponent(btnChangeColor);
      verSplitPane.setOneTouchExpandable(true);

      getContentPane().add(verSplitPane, BorderLayout.CENTER);

      // Penanganan aksi penekanan tombol
      btnChangeColor.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
 
               // Nilai numerik int acak dengan rentang 0 - 255
               redValue = (int) (Math.random() * 256);
               greenValue = (int) (Math.random() * 256);
               blueValue = (int) (Math.random() * 256);

               btnColor.setBackground(new Color(redValue, greenValue, blueValue));
 
               redField.setText("" + redValue);
               greenField.setText("" + greenValue);
               blueField.setText("" + blueValue);
            }
         }
      );
   }

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

Menggunakan kelas JSplitPane di Java

Baris nomor 19 adalah pernyataan untuk mendeklarasikan data field redValue, greenValue dan blueValue. Terkait dengan data field, data field dari kelas Java mempunyai nilai default apabila data field tersebut tidak diberi nilai awal saat dideklarasikan. Default value untuk tipe int adalah 0. Baris nomor 25, 29 dan 33 adalah penyataan untuk mengkonstruksi tiga obyek kelas JTextField. Nilai string awal yang ditampilkan di obyek text field adalah default value dari data field redValue, greenValue dan blueValue. Karena tipe data dari data field tersebut adalah int, sedangkan obyek-obyek text field hanya menerima tipe String untuk bisa ditampilkan, perlu adanya konversi tipe data terlebih dahulu dari tipe int ke String sebelum ditampilkan. Anda dapat menambahkan string kosong untuk merubah langsung nilai integer ke bentuk string ( “ ” + redValue).

Baris nomor 38 – 40 adalah penyataan untuk mengkonstruksi tiga obyek kelas JLabel. Obyek label ini ditujukan untuk memberikan label sebagai keterangan tambahan obyek text field yang telah dikonstruksi. Baris nomor 43 adalah pernyataan untuk mengkonstruksi obyek kelas JPanel. Panel merupakan wadah (container class) yang digunakan untuk menyusun label dan text field. Obyek label dan obyek text field yang sebelumnya telah dikonstruksi kemudian disusun di obyek panel ini.

Baris nomor 53 adalah pernyataan untuk mengkonstruksi obyek button (btnColor). Button ini digunakan untuk menampilkan warna yang tersusun atas warna merah, hijau dan biru (RGB). Baris nomor 57 adalah pernyataan untuk mengkonstruksi obyek split pane (horSplitPane) dengan orientasi horisontal. Split pane termasuk komponen wadah yang dibagi menjadi dua bagian oleh garis pembagi (devider) baik secara horisontal maupun vertikal. Untuk meletakkan panel di wadah sebelah kiri, Anda menggunakan metoda setLeftComponent, sedangkan untuk meletakkan obyek btnColor di sebelah kanan, digunakan metoda setRightComponent (pernyataan baris nomor 59 dan 60).

Baris nomor 62 adalah pernyataan untuk mengkonstruksi obyek button (btnChangeColor). Di hasil tampilan program, obyek button ini diletakkan di posisi paling bawah dan dapat memicu action event ketika diklik. Di baris nomor 65, obyek split pane dengan orientasi vertikal dikonstruksi. Untuk meletakkan komponen di posisi atas di obyek split pane, digunakan metoda setTopComponent, sedangkan untuk meletakkan komponen di posisi bawah, digunakan metoda setBottomComponent. Baris nomor 66 dan 67 adalah pernyataan untuk menempatkan obyek split pane (horSplitPane) di posisi atas dan obyek button (btnChangeColor) di posisi bawah. Metoda setOneTouchExpandable dari obyek split pane (baris nomor 60 dan 68) digunakan untuk membuka atau menutup salah satu sisi dan menampilkan secara penuh sisi yang lain dengan hanya mengklik salah satu tanda segitiga kecil yang ditampilkan di baris pembagi obyek split pane.

Blok metoda actionPerformed di baris 73 – 89 dieksekusi ketika tombol button di posisi paling bawah diklik. Di blok metoda ini, nilai data field redValue, greenValue dan blueValue dapat berubah sesuai nilai acak hasil metoda random. Nilai baru yang sudah tersimpan di masing-masing variabel kelas tersebut kemudian digunakan untuk mengkonstruksi warna RGB sebagai background dari obyek btnColor (baris nomor 82). Nilai variabel kelas (data field) kemudian juga ditampilkan di obyek text field (redField, greenField dan blueField) dengan menggunakan metoda setText. Karena nilai dari redValue, greenValue dan blueValue bernilai int dan obyek dari kelas JTextField hanya menerima argumen tipe String untuk ditampilkan, maka nilai tipe int perlu dikonversi ke tipe String. Cara yang paling mudah adalah cukup merangkai string kosong dengan nilai yang tersimpan di masing-masing variabel kelas tersebut (“” + redValue) sebagaimana pernyataan di baris nomor 84 - 86.

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.