Jcheckbox Pada Jlist (Java Swing)
Hmmm, dah usang gak maen Swing Hack, di blog sebelumnya aneka macam tutorial perihal swing Hack, swing Makeover, dll.
Untuk itu kali ini aku ingin membuatkan beberapa tips, mengubah komponen pada java. Mungkin anda tidak abnormal dengan tampilan ini:
Yup, tampilan ini biasanya terdapat dalam poling yang memungkinkan kita untuk menentukan l;ebih dari satu pilihan. Kaprikornus tertarik neh, sanggup gak ya java bikin komponen kayak gini? Tentu saja, apa sih yang gak sanggup hehe. Pis ah. Oke kali ini aku akan sedikit mengungkap rahasianya.
Pertama, untuk menciptakan komponen menyerupai ini dijava, kita memerlukan tiga komponen swing:
1. JList
2. JCheckBox
3. JscrolPane
Prinsipnya, kita akan memakai JCheckBox pada Jlist, kemudian kemudian JList ditampilkan didalam JScrollPane. Emang sanggup JCheckBox dipake didalam Jlist? Bisa, caranya dengan menambahkan CellRenderer yang sudah kita ubah sesuai dengan keperluan. Untuk perkara ini kita akan merubah CellRenderer untuk JList dengan menambahkan JCheckBox kedalam JList.
Okelah, cukup sekian basa-basinya, kebanyakan basa bau malah pusing hehe. Langsung aja.
Pertama, Siapkan peralatan tempurnya hehe
- Seperangkat komputer
- Java JDK dan Netbeans (Versi terserah selera hehe)
Langkah kedua, buat project, kasih nama terserah anda, kemudian buat class kasih nama saja CheckBoxList, kemudian masukan isyarat berikut:
Lho Koq? Yaaa, emang selesai, sudah beres, gak percaya? Coba buat JFrame, trus Drag class yang tadi sudah kita buat./* * CheckBoxList demo * * Tutorial dibentuk oleh javadanphp.blogspot.com * anda sanggup memakai class-class yang ada pada tutorial ini tanpa * menghilangkan copyright ini * * anda dapt memakai class tanpa jaminan dari javadanphp.blogspot.com * akan kerusakan yang mungkin ditimbulkan oleh tutorial ini * * Salam * javadanphp.blogspot.com * */ package javaapplication1; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.util.HashSet; import java.util.Iterator; import javax.swing.DefaultListCellRenderer; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Kang Opik */ public class CheckBoxList extends JList implements ListSelectionListener { private Color listForeground, listBackground; HashSet pilihan = new HashSet(); int toggleIndex = -1; boolean toggleWasSelected; public CheckBoxList() { super(); getSelectedColor(); setCellRenderer(new CheckBoxListRenderer()); addListSelectionListener(this); } private void getSelectedColor() { UIDefaults uid = UIManager.getLookAndFeel().getDefaults(); listForeground = uid.getColor("List.foreground"); listBackground = uid.getColor("List.background"); } @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { removeListSelectionListener(this); // cek apakah di-check atau sebaliknya HashSet newSelections = new HashSet(); int size = getModel().getSize(); for (int i = 0; i < size; i++) { if (getSelectionModel().isSelectedIndex(i)) { newSelections.add(new Integer(i)); } } //men-chech yang sebelumnya dipilih Iterator it = pilihan.iterator(); while (it.hasNext()) { int index = ((Integer) it.next()).intValue(); getSelectionModel().addSelectionInterval(index, index); } it = newSelections.iterator(); while (it.hasNext()) { Integer nextInt = (Integer) it.next(); int index = nextInt.intValue(); if (pilihan.contains(nextInt)) { getSelectionModel().removeSelectionInterval(index, index); } else { getSelectionModel().addSelectionInterval(index, index); } } // ingat pilihan yang telah dipilih pilihan.clear(); for (int i = 0; i < size; i++) { if (getSelectionModel().isSelectedIndex(i)) { pilihan.add(new Integer(i)); } } addListSelectionListener(this); } } class CheckBoxListRenderer extends JComponent implements ListCellRenderer { DefaultListCellRenderer defaultCellCellRenderer; JCheckBox checkbox; public CheckBoxListRenderer() { setLayout(new BorderLayout()); defaultCellCellRenderer = new DefaultListCellRenderer(); checkbox = new JCheckBox(); add(checkbox, BorderLayout.WEST); add(defaultCellCellRenderer, BorderLayout.CENTER); } @Override public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { defaultCellCellRenderer.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus); checkbox.setSelected(isSelected); Component[] comps = getComponents(); for (int i = 0; i < comps.length; i++) { comps[i].setForeground(listForeground); comps[i].setBackground(listBackground); } return this; } } }
Iya kan selesai, tapi jangan lupa pastikan ubah property selectionModenya jadi MULTIPLE_INTERVAL
Berikut Source code lengkapnya, silahkan otak atik kodenya:
Source Code (4Shared.com)
Neh screenshootnya
Oke, sekian dulu tutorial kali ini, kalo ada yang kurang terperinci silahkan komentar.
Belum ada Komentar untuk "Jcheckbox Pada Jlist (Java Swing)"
Posting Komentar