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 | // Nama file : TabelPenjualanNotebook.java // Membuat tabel sederhana menggunakan kelas JTable // Mengimpor kelas import java.awt.*; import java.awt.event.*; import javax.swing.*; // Deklarasi kelas public class TabelPenjualanNotebook 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(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 tabel JTable tabel = new JTable(dataTabel, kolomTabel); // Membuat obyek checkbox JCheckBox checkBoxGrid = new JCheckBox("Tampilkan Grid", true); // Membuat obyek combo box model DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel(); // Membuat obyek combo box JComboBox comboBox = new JComboBox(comboBoxModel); // Membuat list cell renderer ButtonLabelRenderer renderer = new ButtonLabelRenderer(); // Konstruktor tanpa argumen public TabelPenjualanNotebook() { comboBoxModel.addElement(new Object[] {Color.BLACK, "Black Color"}); comboBoxModel.addElement(new Object[] {Color.RED, "Red Color"}); comboBoxModel.addElement(new Object[] {Color.MAGENTA, "Magenta Color"}); comboBoxModel.addElement(new Object[] {Color.BLUE, "Blue Color"}); comboBoxModel.addElement(new Object[] {Color.ORANGE, "Orange Color"}); comboBox.setRenderer(renderer); comboBox.setMaximumRowCount(3); // Menginisialisasi tabel tabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); tabel.setGridColor(Color.BLACK); tabel.setSelectionBackground(Color.PINK); tabel.setSelectionForeground(Color.BLUE); // Menambahkan check box dan combo box di panel JPanel panel = new JPanel(); panel.add(checkBoxGrid); panel.add(comboBox); getContentPane().add(new JScrollPane(tabel), BorderLayout.CENTER); getContentPane().add(panel, BorderLayout.PAGE_END); // Penanganan event check box checkBoxGrid.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { tabel.setShowGrid(checkBoxGrid.isSelected()); } } ); // Penanganan event combo box comboBox.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { Object[] duaObjek = (Object[])(comboBox.getSelectedItem()); tabel.setGridColor((Color)duaObjek[0]); } } ); } // Metoda main public static void main(String[] args) { TabelPenjualanNotebook frame = new TabelPenjualanNotebook(); frame.setTitle("Kelas TabelPenjualanNotebook"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(450, 200); frame.setVisible(true); } } |
Tabel penjualan notebook menggunakan konstruktor dengan dua parameter. Parameter pertama adalah larik obyek dimensi dua sebagai data yang ditampilkan di tabel dan parameter kedua adalah larik string dimensi satu sebagai nama kolom tabel. Tabel kemudian diinisialisasi dengan mengatur properti kelas JTable (baris nomor 56 – 59) seperti auto resize mode, warna grid, warna latar dan warna teks saat baris tabel dipilih menggunakan metoda setAutoResizeMode, setGridColor, setSelectionBackground dan setSelectionForeground.
Properti autoResizeMode digunakan untuk menentukan bagaimana perubahan ukuran kolom di tabel akan berpengaruh pada kolom yang lain. Anda dapat menggunakan salah satu dari lima konstanta bernilai integer yang tersedia. Berikut ini adalah daftar konstanta yang dapat digunakan sebagai salah satu argumen parameter metoda setAutoResizeMode kelas JTable:
Konstanta Untuk Metoda setAutoResizeMode
Konstanta | Keterangan |
---|---|
AUTO_RESIZE_OFF | Merubah lebar sebuah kolom tabel tidak akan mempengaruhi lebar kolom yang lain. |
AUTO_RESIZE_LAST_COLUMN | Merubah lebar sebuah kolom tabel akan mempengaruhi lebar kolom terakhir. |
AUTO_RESIZE_SUBSEQUENT_COLUMN | Merubah lebar sebuah kolom tabel akan mempengaruhi lebar semua kolom yang berikutnya. |
AUTO_RESIZE_NEXT_COLUMN | Merubah lebar sebuah kolom tabel akan mempengaruhi lebar sebuah kolom yang berikutnya. |
AUTO_RESIZE_ALL_COLUMN | Merubah lebar sebuah kolom tabel akan mempengaruhi lebar semua kolom. |
Properti gridColor dengan metoda setGridColor digunakan untuk menginisialisasi warna grid tabel dengan hitam untuk menyesuaikan warna yang ditampilkan obyek combo box di indek 0. Properti selectionBackground dan selectionForeground digunakan untuk mengatur warna latar dan warna teks ketika salah satu baris tabel dipilih. Tabel diinisialisasi dengan warna merah muda untuk background dan warna biru untuk foreground.
Baris nomor 32 adalah pernyataan untuk membuat obyek check box. Karena tabel ditampilkan dengan grid saat pertama program dijalankan, maka obyek check box harus dalam posisi tercentang. Anda dapat memberi argumen boolean true sebagai nilai parameter kedua konstruktor kelas JCheckBox saat obyek dikonstruksi (baris nomor 32). Pernyataan lain di kode program tersebut adalah membuat obyek combo box dengan elemen berupa obyek grafis seperti.
Program di atas hanya menangani event ActionEvent (baca artikel Penanganan ActionEvent Di Java (actionPerformed)) yang dihasilkan oleh dua komponen berbeda. ActionEvent pertama terjadi di obyek check box kelas JCheckBox. Bila obyek check box dicentang, maka grid tabel akan ditampilkan dan jika sebaliknya, grid tabel tidak ditampilkan.
Di pernyataan baris nomor 70 – 76, grid ditampilkan atau dihilangkan dengan metoda setShowGrid kelas JTable. Argumen parameter metoda tersebut adalah nilai boolean hasil dari ekspresi checkBoxGrid.isSelected(). Misalnya, bila obyek check box dicentang, maka ekspresi tersebut akan menghasilkan boolean true. Metoda setShowGrid dengan argumen true akan menjadikan grid tabel ditampilkan, begitu pula sebaliknya.
ActionEvent kedua terjadi di obyek combo box kelas JComboBox (baris nomor 79 – 86). Bila Anda mengklik untuk memilih salah satu warna di obyek tersebut, maka warna grid tabel akan berubah menyesuaikan warna yang dipilih. Anda tentu mengerti setiap sel obyek combo box menampilkan item atau elemen berupa larik obyek berdimensi satu dengan dua indek dimana indek 0 adalah konstanta warna kelas Color dan indek 1 adalah literal string (baca artikel Mengenal Dan Memahami Cell Renderer Kelas JComboBox Di pemrograman-Java).
Ketika salah satu sel obyek combo box dipilih, nilai sel dapat diperoleh dengan menggunakan metoda getSelectedItem. Nilai ini kemudian dikonversi kembali menjadi larik obyek. Anda dapat mengubah warna grid tabel dengan metoda setGridColor kelas JTable dengan argumen berupa larik obyek di indek 0 yang terlebih dahulu dikonversi ke tipe kelas Color.