Contoh program Java menggunakan kelas JTable
Program Java Menggunakan Kelas JTable
Di artikel Mengenal Kelas JTable Di Pemrograman Java, Anda diperkenalkan pada kelas JTable yang meliputi konstruktor, metoda dan properti (data filed) yang dimiliki. Di artikel kali ini, Anda diberi contoh program sederhana yang menampilkan data di tabel serta penggunaan beberapa data filed kelas JTable. Data tabel adalah catatan penjualan notebook Toshiba. Data tabel meliputi tipe notebook, warna, sudah atau belum ada sistem operasi dan jumlah yang terjual. Berikut ini adalah kode program dan hasil eksekusinya:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Nama file : TabelPenjualanNotebook.java
// Membuat tabel sederhana menggunakan kelas JTable

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

// Deklarasi kelas
public class TabelPenjualanNotebook extends JFrame {

  // Membuat nama kolom tabel
  String[] kolomTabel =
     {"Tipe", "Warna", "Sistem Operasi", "Jumlah Terjual"};

  // Membuat data tabel
  Object[][] dataTabel = {
     {"Satellite L630-1031U", "Black", new Boolean(false), new Integer(3)},
     {"Satellite L645-1043XB", "Brown", new Boolean(true), new Integer(7)},
     {"Satellite L645-1078X", "Gray", new Boolean(true), new Integer(5)},
     {"Satellite C640-1010U", "Black", new Boolean(false), new Integer(4)},
     {"Satellite A665-10033D", "Black", new Boolean(true), new Integer(2)},
     {"Qosmio X500-D832", "Black", new Boolean(true), new Integer(4)},
     {"Portege T210-1014UR", "Red", new Boolean(true), new Integer(6)},
     {"Libretto W100-1002U", "Black", new Boolean(true), new Integer(1)}
   };

   // Membuat tabel
   JTable tabel = new JTable(dataTabel, kolomTabel);

   // Membuat obyek checkbox
   JCheckBox checkBoxGrid = new JCheckBox("Tampilkan Grid", true);

   // Membuat obyek combo box model
   DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel();

   // Membuat obyek combo box
   JComboBox comboBox = new JComboBox(comboBoxModel);

   // Membuat list cell renderer
   ButtonLabelRenderer renderer = new ButtonLabelRenderer();

   // Konstruktor tanpa argumen
   public TabelPenjualanNotebook() {

      comboBoxModel.addElement(new Object[] {Color.BLACK, "Black Color"});
      comboBoxModel.addElement(new Object[] {Color.RED, "Red Color"});
      comboBoxModel.addElement(new Object[] {Color.MAGENTA, "Magenta Color"});
      comboBoxModel.addElement(new Object[] {Color.BLUE, "Blue Color"});
      comboBoxModel.addElement(new Object[] {Color.ORANGE, "Orange Color"});

      comboBox.setRenderer(renderer);
      comboBox.setMaximumRowCount(3);

      // Menginisialisasi tabel
      tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      tabel.setGridColor(Color.BLACK);
      tabel.setSelectionBackground(Color.PINK);
      tabel.setSelectionForeground(Color.BLUE);

      // Menambahkan check box dan combo box di panel
      JPanel panel = new JPanel();
      panel.add(checkBoxGrid);
      panel.add(comboBox);

      getContentPane().add(new JScrollPane(tabel), BorderLayout.CENTER);
      getContentPane().add(panel, BorderLayout.PAGE_END);

      // Penanganan event check box
      checkBoxGrid.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
               tabel.setShowGrid(checkBoxGrid.isSelected());
            }
         }
      );

      // Penanganan event combo box
      comboBox.addActionListener(
         new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
               Object[] duaObjek = (Object[])(comboBox.getSelectedItem());
               tabel.setGridColor((Color)duaObjek[0]);
            }
         }
      );
   }

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

Contoh program Java menggunakan kelas JTable

Tabel penjualan notebook menggunakan konstruktor dengan dua parameter. Parameter pertama adalah larik obyek dimensi dua sebagai data yang ditampilkan di tabel dan parameter kedua adalah larik string dimensi satu sebagai nama kolom tabel. Tabel kemudian diinisialisasi dengan mengatur properti kelas JTable (baris nomor 56 – 59) seperti auto resize mode, warna grid, warna latar dan warna teks saat baris tabel dipilih menggunakan metoda setAutoResizeMode, setGridColor, setSelectionBackground dan setSelectionForeground.

Properti autoResizeMode digunakan untuk menentukan bagaimana perubahan ukuran kolom di tabel akan berpengaruh pada kolom yang lain. Anda dapat menggunakan salah satu dari lima konstanta bernilai integer yang tersedia. Berikut ini adalah daftar konstanta yang dapat digunakan sebagai salah satu argumen parameter metoda setAutoResizeMode kelas JTable:

Konstanta Untuk Metoda setAutoResizeMode

Konstanta Keterangan
AUTO_RESIZE_OFF Merubah lebar sebuah kolom tabel tidak akan mempengaruhi lebar kolom yang lain.
AUTO_RESIZE_LAST_COLUMN Merubah lebar sebuah kolom tabel akan mempengaruhi lebar kolom terakhir.
AUTO_RESIZE_SUBSEQUENT_COLUMN Merubah lebar sebuah kolom tabel akan mempengaruhi lebar semua kolom yang berikutnya.
AUTO_RESIZE_NEXT_COLUMN Merubah lebar sebuah kolom tabel akan mempengaruhi lebar sebuah kolom yang berikutnya.
AUTO_RESIZE_ALL_COLUMN Merubah lebar sebuah kolom tabel akan mempengaruhi lebar semua kolom.

Properti gridColor dengan metoda setGridColor digunakan untuk menginisialisasi warna grid tabel dengan hitam untuk menyesuaikan warna yang ditampilkan obyek combo box di indek 0. Properti selectionBackground dan selectionForeground digunakan untuk mengatur warna latar dan warna teks ketika salah satu baris tabel dipilih. Tabel diinisialisasi dengan warna merah muda untuk background dan warna biru untuk foreground.

Baris nomor 32 adalah pernyataan untuk membuat obyek check box. Karena tabel ditampilkan dengan grid saat pertama program dijalankan, maka obyek check box harus dalam posisi tercentang. Anda dapat memberi argumen boolean true sebagai nilai parameter kedua konstruktor kelas JCheckBox saat obyek dikonstruksi (baris nomor 32). Pernyataan lain di kode program tersebut adalah membuat obyek combo box dengan elemen berupa obyek grafis seperti.

Program di atas hanya menangani event ActionEvent (baca artikel Penanganan ActionEvent Di Java (actionPerformed)) yang dihasilkan oleh dua komponen berbeda. ActionEvent pertama terjadi di obyek check box kelas JCheckBox. Bila obyek check box dicentang, maka grid tabel akan ditampilkan dan jika sebaliknya, grid tabel tidak ditampilkan.

Di pernyataan baris nomor 70 – 76, grid ditampilkan atau dihilangkan dengan metoda setShowGrid kelas JTable. Argumen parameter metoda tersebut adalah nilai boolean hasil dari ekspresi checkBoxGrid.isSelected(). Misalnya, bila obyek check box dicentang, maka ekspresi tersebut akan menghasilkan boolean true. Metoda setShowGrid dengan argumen true akan menjadikan grid tabel ditampilkan, begitu pula sebaliknya.

ActionEvent kedua terjadi di obyek combo box kelas JComboBox (baris nomor 79 – 86). Bila Anda mengklik untuk memilih salah satu warna di obyek tersebut, maka warna grid tabel akan berubah menyesuaikan warna yang dipilih. Anda tentu mengerti setiap sel obyek combo box menampilkan item atau elemen berupa larik obyek berdimensi satu dengan dua indek dimana indek 0 adalah konstanta warna kelas Color dan indek 1 adalah literal string (baca artikel Mengenal Dan Memahami Cell Renderer Kelas JComboBox Di pemrograman-Java).

Ketika salah satu sel obyek combo box dipilih, nilai sel dapat diperoleh dengan menggunakan metoda getSelectedItem. Nilai ini kemudian dikonversi kembali menjadi larik obyek. Anda dapat mengubah warna grid tabel dengan metoda setGridColor kelas JTable dengan argumen berupa larik obyek di indek 0 yang terlebih dahulu dikonversi ke tipe kelas Color.