Mengenal renderer dan editor pada tabel program Java
Mengenal Renderer Dan Editor Pada Tabel Program Java
Sel-sel tabel di pemrograman Java berisi perwakilan string (string representation) dari masing-masing tipe kelas. Semua string di setiap sel tabel ditampilkan rata kiri. Java sebenarnya telah menyediakan predefined renderer and editor (kelas-kelas tertentu yang dapat digunakan sebagai renderer dan editor), artinya setiap kelas yang mengisi sel tabel telah memiliki predefined renderer dan predefined editor yang sudah didefinisikan.

Berikut ini adalah tabel untuk predefined renderer dan predefined editor yang dapat mengisi sel-sel table:

Renderer Dan Editor Tabel Di Pemrograman Java

Kelas Predefined Renderer Predefined Editor
Object JLabel (rata kiri) JTextField
Date JLabel (rata kiri) JTextField
Number JLabel (rata kiri) JTextField
ImageIcon JLabel (rata kiri)
Boolean JCheckBox (rata tengah) JCheckBox (rata tengah)

Predefined renderer and editor secara otomatis ditempatkan dan dimuat disesuaikan dengan kelas Java yang mengisi sel-sel kolom. Kelas-kelas yang mengisi sel kolom dapat diperoleh dengan menggunakan metoda getColumnClass(). Hasil pengembalian metoda ini adalah kelas yang mengisi sel kolom.

Untuk menggunakan predefined editor, Anda perlu membuat table model yang mengimplementasikan interface TableModel atau turunan dari kelas DefaultTableModel dan kemudian mendeklarasikan ulang metoda getColumnClass(int column) sebagaimana sintak dibawah ini.

public Class getColumnClass(int column) {
   return getValueAt(0, column).getClass();
}

Contoh program Java berikut ini menulis ulang kode program yang ada di artikel Mengenal Kelas JTableHeader Dan Penggunaannya Di Program Java dengan menggunakan predefined renderer dan editor. Tabel mempunyai empat kolom, dimana nilai sel di dua kolom pertama adalah dari kelas Object (obyek kelas String), nilai sel kolom ketiga dari kelas Boolean dan nilai sel kolom keempat dari kelas Number.

Program terdiri dari dua kelas. Kelas pertama adalah ModelTablePenjualanNotebook yaitu kelas yang dideklarasikan sebagai tabel model dan turunan dari kelas DefaultTableModel. Kelas kedua adalah TabelPenjualanNotebook5 yaitu main class yang menggunakan kelas ModelTabelPenjualanNotebook. Berikut ini adalah kode program dan hasil eksekusinya:

Kode program kelas ModelTabelPenjualanNotebook.java

 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
// Nama file : ModelTabelPenjualanNotebook.java
// Membuat table model untuk menggunakan predefined renderer and editor

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

// Definisi kelas
public class ModelTabelPenjualanNotebook extends DefaultTableModel {

   // Konstruktor tanpa argumen
   public ModelTabelPenjualanNotebook() {
   }

   // Konstruktor table dengan data dan nama kolom
   public ModelTabelPenjualanNotebook(Object[][] data, Object[] kolom) {
      super(data, kolom);
   }

   // Mendeklarasikan kembali metoda getColumnClass
   public Class getColumnClass(int column) {
      return getValueAt(0, column).getClass();
   }
}

Kode program kelas TabelPenjualanNotebook5.java

 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
// Nama file : TabelPenjualanNotebook5.java
// Mendemonstrasikan penggunaan predefined editor

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

// Deklarasi kelas
public class TabelPenjualanNotebook5 extends JFrame {

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

   // Membuat data tabel
   private 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)},
   };

   // Membuat table model
   private ModelTabelPenjualanNotebook model = 
      new ModelTabelPenjualanNotebook(dataTabel, kolomTabel);

   // Membuat tabel
   private JTable tabel = new JTable(model);

   // Membuat obyek font
   private Font font = new Font("Tahoma", Font.BOLD, 12);

   // Konstruktor tanpa argumen
   public TabelPenjualanNotebook5() {

      // Menginisialisi tabel
      tabel.setRowSelectionAllowed(true);
      tabel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

      // Mendekorasi table header
      JTableHeader header = tabel.getTableHeader();
      header.setReorderingAllowed(false);
      header.setFont(font);

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

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

Mengenal renderer dan editor Tabel di Java

Kelas ModelTabelPenjualanNotebook adalah table model yang dibuat sendiri dan merupakan turunan dari kelas DefaultTabelModel. Maksud penggunaan table model ini adalah untuk mendapatkan tipe kelas dari setiap sel kolom tabel yang dikembalikan oleh metoda getColumnClass().

Kelas-kelas yang berfungsi sebagai renderer dan editor kemudian ditempatkan dan dimuat di setiap sel kolom disesuaikan dengan nilai dari sel kolom yang mewakili kelas tersebut. Di pernyataan baris nomor 28, kelas ModelTablePenjualanNotebook dikonstruksi dan digunakan sebagai table model dari obyek tabel yang diacu oleh variabel tabel (penyataan baris nomor 32).

Apabila diperhatikan, obyek yang mendiami setiap sel di kolom 1, 2 dan 4 adalah dari kelas JLabel, sedangkan obyek yang mendiami setiap sel di kolom 3 adalah dari kelas JCheckBox. Apabila Anda merubah nilai setiap sel di kolom 1, 2 dan 4, maka obyek di sel akan berubah menjadi kotak teks (obyek dari kelas JTextField). Untuk sel di kolom 3 (nilai tipe kelas Boolean), apabila nilai sel dirubah meupun tidak, obyek yang mendiami sel tetap sama yaitu dari kelas JCheckBox.

SILAHKAN BAGIKAN ARTIKEL INI BILA BERMANFAAT
Pin It