Banner Java

Contoh Program Java Menggunakan Metoda Kelas Konkrit DefaultTableModel

Program Java berikut ini mendemontrasikan penggunaan beberapa metoda kelas konkrit DefaultTableModel. Beberapa metoda yang digunakan dari kelas tersebut adalah addRow, insertRow dan removeRow. Sebagai pengganti dari metoda showGrid dari kelas JTable untuk menampilkan garis vertikal dan horisontal tabel, Anda dapat menggunakan dua metoda lain dari kelas JTable yaitu setShowVerticalLines dan setShowHorizontalLines. Berikut ini adalah kode program dan hasil eksekusinya:

// Nama file : TabelPenjualanNotebook2.java
// Mendemontrasikan penggunaan beberapa metoda kelas DefaultTableModel

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

// Deklarasi kelas
public class TabelPenjualanNotebook2 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)},
      {"Libretto W100-1002U", "Black", new Boolean(true), new Integer(1)}
   };

   // 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 tambahBaris = new JButton("Tambah baris");
   private JButton hapusBaris = new JButton("Hapus baris dipilih");
   private JButton tambahKolom = new JButton("Tambah kolom");

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

   // Membuat obyek combo box
   private JComboBox cboWarna = new JComboBox(cboModel);

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

   // Konstruktor tanpa argumen
   public TabelPenjualanNotebook2() {

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

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

      // Menginisialisi tabel
      tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      tabel.setGridColor(Color.BLACK);
      tabel.setSelectionBackground(Color.YELLOW);
      tabel.setSelectionForeground(Color.RED);
      tabel.setRowSelectionAllowed(true);
      tabel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

      // Mengelompokkan obyek label dan combo box
      JPanel panel1 = new JPanel();
      panel1.setLayout(new BorderLayout(4, 0));
      panel1.add(new JLabel("Warna garis"), BorderLayout.LINE_START);
      panel1.add(cboWarna, BorderLayout.CENTER);

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

      // Mengelompokkan obyek panel1 dan panel2
      JPanel panel3 = new JPanel();
      panel3.setLayout(new GridLayout(2, 1, 0, 0));
      panel3.add(panel1);
      panel3.add(panel2);

      // Mengelompokkan obyek tombol
      JPanel panel4 = new JPanel();
      panel4.setLayout(new GridLayout(1, 3));
      panel4.add(tambahBaris);
      panel4.add(hapusBaris);
      panel4.add(tambahKolom);

      getContentPane().add(panel3, BorderLayout.PAGE_START);
      getContentPane().add(new JScrollPane(tabel), BorderLayout.CENTER);
      getContentPane().add(panel4, 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 combo box
      cboWarna.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
            Object[] duaObjek = (Object[])(cboWarna.getSelectedItem());
            tabel.setGridColor((Color)duaObjek[0]);
         }
      });

      // Penanganan event button
      tambahBaris.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
   
            // Memastikan ada salah satu baris dipilih
            if (tabel.getSelectedRow() >= 0)
               tModel.insertRow(tabel.getSelectedRow(), new java.util.Vector());
            else
               // Bila tidak ada baris yang dipilih
               tModel.addRow(new java.util.Vector());
         }
      });

      hapusBaris.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
            if (tabel.getSelectedRow() >= 0)
               tModel.removeRow(tabel.getSelectedRow());
            else
               JOptionPane.showMessageDialog(null,
                  "Pilih baris yang akan dihapus!", "Menghapus Baris",
                  JOptionPane.INFORMATION_MESSAGE);
         }
      });

      tambahKolom.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) {
            String namaKolom = JOptionPane.showInputDialog("Nama kolom");
            tModel.addColumn(namaKolom, new java.util.Vector());
         }
      });
   }

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

Menambah, menyisipkan dan menghapus data tabel

Contoh program ini dibuat menggunakan table model (kelas konkrit DefaultTableModel). Dengan membuat obyek tabel melalui table model menggunakan konstruktor kelas konkrit DefaultTableModel (pernyataan baris nomor 31), Anda dapat menggunakan metoda tertentu dari kelas tersebut untuk menambah, menyisipkan atau menghapus baris tabel dimana fasilitas ini tidak terdapat di kelas JTable. Untuk menampilkan grid tabel, program menggunakan kombinasi dua metoda kelas JTable yaitu metoda setShowHorizontalLines (pernyataan baris nomor 113 – 117) dan metoda setShowVerticalLines (pernyataan baris nomor 107 – 111)

Baris nomor 128 – 138 adalah pernyataan yang dieksekusi ketika tombol berlabel “Tambah baris” diklik. Tombol ini digunakan untuk menambah sebuah baris tabel di posisi paling akhir atau menyisipkan sebuah baris di antara baris tabel lain. Ketika tombol penambah baris diklik, pernyataan baris nomor 132 dievaluasi untuk memastikan apakah salah satu baris tabel telah disorot. Ekspresi tabel.getSelectedRow() akan mengembalikan nilai int yang mewakili indek baris tabel yang disorot (indek baris tabel dimulai dari 0). Apabila nilai yang dikembalikan oleh ekspresi lebih besar atau sama dengan 0 (menandakan salah satu baris tabel disorot), maka pernyataan baris nomor 133 dieksekusi. Pernyataan tersebut menyisipkan baris baru di atas baris yang disorot. Apabila nilai yang dikembalikan ekspresi lebih kecil dari 0, maka pernyataan baris nomor 136 dieksekusi yaitu menambahkan baris baru di posisi paling bawah.

Untuk menyisipkan baris baru di antara baris tabel yang lain, digunakan metoda insertRow, sedangkan untuk menambahkan baris baru di posisi paling bawah, digunakan metoda addRow. Kedua metoda tersebut berada di kelas DefaultTableModel (di dalam contoh program diacu oleh variabel acuan tModel). Apabila diperhatikan, kedua metoda mempunyai parameter tipe kelas Vector yang berada di paket java.util. Kelas DefaultTableModel mengakomodasi data tabel di suatu tempat penyimpanan yang merupakan obyek kelas Vector. Elemen yang tersimpan di obyek vektor merupakan larik obyek dimana masing-masing obyek mewakili nilai sel tabel.

Dari contoh program di atas, sebuah baris tabel juga dapat dihapus dengan mengklik tombol berlabel “Hapus baris dipilih”. Saat tombol diklik, pernyataan baris nomor 140 – 149 dieksekusi. Program akan mengevaluasi terlebih dahulu pernyataan baris nomor 142 untuk menentukan apakan salah satu baris tabel disorot. Apabila hasil evaluasi bernilai boolean true (nilai ekspresi tabel.getSelectedRow() lebih besar atau sama dengan 0), maka pernyataan baris nomor 143 dieksekusi yaitu menghapus baris yang dipilih menggunakan metoda removeRow. Metode removeRow mempunyai sebuah parameter tipe int yang menunjukkan indek baris tabel yang dihapus. Apabila hasil evaluasi bernilai boolean false (nilai ekspresi tabel.getSelectedRow() lebih kecil dari 0), maka pernyataan baris nomor 145 dieksekusi yaitu menampilkan kotak dialog pesan yang menginstruksikan pengguna aplikasi untuk menyorot salah satu baris yang akan dihapus.

Menambah, menyisipkan dan menghapus data tabel

Untuk menambah kolom baru di posisi paling akhir (paling kanan) dari tabel, Anda dapat menggunakan tombol berlabel “Tambah kolom”. Ketika tombol diklik, pernyataan baris nomor 151 – 156 dieksekusi. Saat program mengeksekusi pernyataan baris nomor 153, kotak dialog input ditampilkan. Anda dapat memasukkan string di kotak dialog sebagai input untuk label kolom baru. Apabila kotak dialog input dibiarkan kosong dan kemudian langsung menekan tombol berlabel “OK”, maka kolom baru akan tetap ditambahkan di tabel tanpa label kolom. Penambahan kolom baru di tabel menggunakan metoda addColumn dengan argumen parameter pertama adalah tipe String dan argumen parameter kedua adalah tipe Vector.

Menambah, menyisipkan dan menghapus data tabel

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.