Banner Java

Contoh Program Java: Menggunakan Table Column Model

Table model (baca artikel Table Model Dan Kelas Konkrit DefaultTableModel Di Pemrograman Java dan Contoh Program Java Menggunakan Metoda Kelas Konkrit DefaultTableModel) hanya dapat digunakan untuk menambah kolom tabel, tetapi tidak dapat digunakan untuk menghapusnya. Anda perlu menggunakan table column model (baca artikel Mengenal Table Column Model, DefaultTableColumnModel Dan TableColumn Di Pemrograman Java) untuk dapat menghapus kolom tabel yang diinginkan. Contoh program berikut ini mendemonstrasikan bagaimana menggunakan table column model untuk menghapus dan memindahkan kolom di sebuah table:

// Nama file : TabelPenjualanNotebook3.java
// Penggunaan table column model untuk menghapus dan memindahkan kolom

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

// Deklarasi kelas
public class TabelPenjualanNotebook3 extends JFrame {

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

   // Membuat data tabel
   private Object[][] dataTabel = {
      {"Satellite L630-1031U", "Black", new Boolean(false), new Integer(3),
        new Integer(6300000)},
      {"Satellite L645-1043XB", "Brown", new Boolean(true), new Integer(7),
        new Integer (7500000)},
      {"Qosmio X500-D832", "Black", new Boolean(true), new Integer(4),
        new Integer(14000000)},
      {"Portege T210-1014UR", "Red", new Boolean(true), new Integer(6),
        new Integer(6800000)},
      {"Libretto W100-1002U", "Black", new Boolean(true), new Integer(1),
        new Integer(12000000)}
   };

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

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

   // Membuat obyek check box
   private JCheckBox grsVertikal = new JCheckBox(
      "Tampilkan garis vertikal", true);
   private JCheckBox grsHorisontal = new JCheckBox(
      "Tampilkan garis Horisontal", true);

   // Membuat obyek button (tombol)
   private JButton hapus = new JButton("Hapus kolom");
   private JButton pindah = new JButton("Pindahkan kolom ke posisi kedua");

   // Konstruktor tanpa argumen
   public TabelPenjualanNotebook3() {

      // Menginisialisasi tabel
      tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      tabel.setColumnSelectionAllowed(true);
      tabel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

      // Mengelompokkan obyek check box
      JPanel panel1 = new JPanel();
      panel1.setLayout(new FlowLayout());
      panel1.add(grsVertikal);
      panel1.add(grsHorisontal);

      // Mengelompokkan obyek tombol
      JPanel panel2 = new JPanel();
      panel2.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0));
      panel2.add(hapus);
      panel2.add(pindah);

      getContentPane().add(panel1, BorderLayout.PAGE_START);
      getContentPane().add(new JScrollPane(tabel), BorderLayout.CENTER);
      getContentPane().add(panel2, BorderLayout.PAGE_END);

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

      grsHorisontal.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
            tabel.setShowHorizontalLines(grsHorisontal.isSelected());
         }
      });

      // Penanganan event button
      hapus.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
            if (tabel.getSelectedColumn() >= 0) {
               TableColumnModel modelKolom = tabel.getColumnModel();
               TableColumn kolomDihapus = 
               modelKolom.getColumn(tabel.getSelectedColumn());
               modelKolom.removeColumn(kolomDihapus);
            }
            else
               JOptionPane.showMessageDialog(null,
                  "Pilih kolom yang akan dihapus!", "Hapus Kolom",
                  JOptionPane.INFORMATION_MESSAGE);
         }
      });

      pindah.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {

            if (tabel.getSelectedColumn() >= 0) {
               int indekLama = tabel.getSelectedColumn();
               int indekBaru = 1;
               TableColumnModel modelKolom = tabel.getColumnModel();
               modelKolom.moveColumn(indekLama, indekBaru);
            }
            else
               JOptionPane.showMessageDialog(null,
                  "Pilih kolom yang akan dipindah!", "Pindah Kolom",
                  JOptionPane.INFORMATION_MESSAGE);
         }
      });
   }

   // Metoda main
   public static void main(String[] args) {
      TabelPenjualanNotebook3 frame = new TabelPenjualanNotebook3();
      frame.setTitle("Kelas TabelPenjualanNotebook3");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(440, 200);
      frame.setVisible(true);
   }
}
Menggunakan table column model di Java Menggunakan table column model di Java

Baris nomor 86 – 99 adalah blok pernyataan yang dieksekusi ketika tombol berlabel “Hapus kolom” ditekan. Pernyataan penyeleksian baris nomor 88 memastikan terlebih dahulu apakah sebuah kolom yang akan dihilangkan telah dipilih dengan mengklik di salah satu sel kolom tersebut. Apabila belum ada kolom yang dipilih dan tombol untuk menghapus kolom ditekan, maka kotak dialog pesan muncul yang menyarankan untuk memilih terlebih dahulu kolom yang ingin dihapus.

Pernyataan baris nomor 89 mengembalikan obyek table column model yang digunakan tabel. Table column model dari tabel adalah DefaultTableColumnModel yang berisi semua informasi kolom tabel. Informasi ini disimpan di variabel acuan modelKolom. Baris nomor 90 adalah pernyataan untuk menentukan model kolom individu dari kolom yang dipilih. Atribut-atribut dari kolom ini disimpan di variabel acuan kolomDihapus. Untuk menghapus kolom tertentu yang dipilih, Anda menggunakan metoda removeColumn dari kelas DefaultTableColumnModel dengan argumen parameter berupa variabel yang mengacu ke kelas TableColumn (pernyataan baris nomor 92).

Pernyataan baris nomor 101 – 115 digunakan untuk memindahkan posisi kolom saat ini ke posisi baru. Di contoh program ini, kolom yang telah dipilih di posisi saat ini dipindahkan ke posisi kolom kedua. Sebelum menekan tombol berlabel “Pindahkan kolom ke posisi kedua”, kolom yang akan dipindahkan terlebih dahulu harus sudah dipilih, kalau tidak, kotak dialog ditampilkan yang meminta Anda untuk memilih kolom yang akan dipindahkan ke posisi kedua. Untuk memindahkan kolom, dapat menggunakan metoda moveColumn. Di pernyataan baris nomor 108, argumen parameter pertama bernilai int yang mewakili indek posisi saat ini dari kolom yang akan dipindahkan (indekLama) dan argumen parameter kedua bernilai int yang mewakili indek posisi baru (indekBaru).

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.