Program berikut ini mendemonstrasikan bagaimana menggunakan table column model untuk menghapus dan memindahkan kolom di sebuah table:
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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | // 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); } } |
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, bila tidak, kotak dialog ditampilkan yang meminta Anda untuk memilih terlebih dahulu kolom yang akan dipindahkan. Untuk memindahkan kolom, digunakan 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).