Menggunakan custome renderer pada tabel program Java
Menggunakan Custom Renderer Pada Table Program Java
Selain predefined renderer yang secara otomatis ditempatkan dan dimuat disesuaikan dengan kelas Java yang mengisi sel-sel kolom tabel, Anda juga dapat menempatkan image atau komponen grafis Java lainnya di dalam sel tabel (custom renderer). Untuk membuat custom renderer, Anda dapat membuat kelas baru yang merupakan turunan dari kelas DefaultTableCellRenderer.

Kelas DefaultTableCellRenderer adalah komponen turunan kelas JLabel dan mengimplementasikan interface TableCellRenderer yang menetapkan metoda getTableCellRendererComponent yang bertindak sebagai renderer. Kelas baru tersebut harus mendeklarasikan ulang metoda getTableCellRendererComponent yang mengembalikan (return) komponen untuk mengisi sel individu di kolom tabel tertentu. Berikut ini adalah sintaksis metoda getTableCellRendererComponent():

public Component getTableCellRendererComponen(JTable table, Object value,
   boolean isSelected, boolean isFocused, int row, int column)

Contoh program berikut ini terdiri dari kelas ButtonLabelCellRenderer dan kelas TabelPenjualanNotebook7. Kelas ButtonLabelCellRenderer adalah turunan dari kelas DefaultTableCellRenderer yang mendeklarasikan metoda getTableCellRendererComponen. Komponen yang dikembalikan metoda ini adalah kombinasi antara obyek kelas JButton dan JLabel yang diletakkan di obyek JPanel. Kelas TabelPenjualanNotebook7 adalah main class yang menggunakan kelas ButtonLabelCellRenderer. Berikut ini adalah kode program kedua kelas tersebut dan hasil eksekusinya:

Kode Program Kelas ButtonLabelCellRenderer.

 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
// Nama file : ButtonLabelCellRenderer.java
// Mengkombinasikan button dan label sebagai table cell renderer

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

// Deklarasi kelas
public class ButtonLabelCellRenderer extends DefaultTableCellRenderer {

   private JPanel panel = new JPanel();
   private JButton button = new JButton();
   private JLabel label = new JLabel("", JLabel.LEFT);

   public ButtonLabelCellRenderer() {

      panel.setLayout(new BorderLayout(8, 3));
      label.setPreferredSize(new Dimension(50, 15));
      panel.add(button, BorderLayout.CENTER);
      panel.add(label, BorderLayout.LINE_END);
   }

   // Mengimplementasikan metoda getTableCellRendererComponent
   public Component getTableCellRendererComponent(JTable table, Object value,
      boolean isSelected, boolean isFocused, int row, int column) {

      Color warna;
      String strWarna = (String)value;

      if (strWarna == "Black")
         warna = new Color(0, 0, 0);
      else if (strWarna == "Brown")
         warna = new Color(139, 69, 19);
      else if (strWarna == "Gray")
         warna = new Color(211, 211, 211);
      else
         // RGB untuk warna merah
         warna = new Color(255, 0, 0);

      button.setBackground(warna);
      label.setText(strWarna);

      return panel;
   }
}

Kode Program Kelas TabelPenjualanNotebook7.

 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 : TabelPenjualanNotebook7.java
// Mendemonstrasikan table cell renderer

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

// Deklarasi kelas
public class TabelPenjualanNotebook7 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(false), new Integer(5)},
      {"Satellite L645-1042XR", "Red", new Boolean(true), new Integer(4)},
   };

   // Membuat model tabel
   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 TabelPenjualanNotebook7() {

      // Mengatur tinggi baris tabel
      tabel.setRowHeight(26);

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

      // Mengatur cell renderer untuk kolom warna
      TableColumn kolomWarna = tabel.getColumn("Warna");
      kolomWarna.setCellRenderer(new ButtonLabelCellRenderer());

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

   // Metoda main
   public static void main(String[] args) {
      TabelPenjualanNotebook7 frame = new TabelPenjualanNotebook7();
      frame.setTitle("Kelas TabelPenjualanNotebook7");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(450, 150);
      frame.setVisible(true);
   }
}
Menggunakan custom renderer Tabel di Java

Baris nomor 25 dari kode program kedua adalah pernyataan membuat table model yang masih menggunakan kelas ModelTabelPenjualanNotebook yang didefinisikan di artikel Mengenal Renderer Dan Editor Tabel Di Pemrograman Java. Untuk menampilkan kombinasi komponen yang terdiri dari warna dan string sebagai renderer untuk kolom Warna, digunakan kelas ButtonLabelCellRenderer seperti pada pernyataan baris nomor 46 dan 47.

Kelas ModelTabelPenjualanNotebook dan ButtonLabelCellRenderer terletak di direktori yang sama dengan kelas TabelPenjualanNotebook7 sehingga tidak perlu mengimpor kedua kelas tersebut.

SILAHKAN BAGIKAN ARTIKEL INI!
Pin It

Produk Laris Toko Gerzal

Edifier R1700BT Active 2.0 Bluetooth Bookshelf Speaker Set

Edifier R1700BT Active 2.0 Bluetooth Bookshelf Speaker Set

Beli di Shopee
Sunbuck AV-555BT Audio Amplifier Bluetooth 5.0 Microphone HiFi

Sunbuck AV-555BT Audio Amplifier Bluetooth 5.0 Microphone HiFi

Beli di Shopee
QUEED Power Supply Station Generator 220V 69800mAh

QUEED Power Supply Station Generator 220V 69800mAh

Beli di Shopee
Fosi Audio V3 Power Amplifier 2 Channel Audio Stereo Hi-Fi TI TPA3255

Fosi Audio V3 Power Amplifier 2 Channel Audio Stereo Hi-Fi

Beli di Shopee
Fosi Audio MC101 Mini Bluetooth Stereo Amplifier With VU Meter

Fosi Audio MC101 Mini Bluetooth Stereo Amplifier With VU Meter

Beli di Shopee