RSS

TableRowSorter, Pencarian data ke dalam JTable

      Tutorial ini q dapet dr Blog tetangga karena dapet tugas dari Dosen.baik teman-teman, kali ini saya akan sedikit nulis tentang pentingnya Table Row Sorter. Seperti apakah sih Table Row Sorter itu? :D . Kita lansung saja pada kasus nya yach? misalnya teman-teman sekalian punya sebuat JTexfield untuk melakuan sebuah pencarian data ke dalam data yang ada di database. Kurang lebih seperti ini.

kebanyakan teman-teman yang membuat kode pogram, pasti memberikan sebuah action query pada JTextfield tersebut..:D. Ya kurang lebih seperti ini.
1
SELECT * FROM Siswa WHERE nama_siswa like ' %"+JTextfield.getText()+" %' ;
 
Jadi intinya kita nyari data ke dalam table Siswa, ya anggap aja seperti itulah :D . Nah, setiap kali kita menuliskan sebuah Charakter, contoh nya saya menuliskan charakter ‘ A ‘. Maka action yang di dapat adalah

1.
SELECT * FROM Siswa WHERE nama_siswa like ' %"a" %' ;
Berarti setiap kali kita menuliskan sebuah charakter lagi. Maka, dia kembali melakukan sebuah Query. Terus begitu hingga data yang di butuhkan muncul.
Hmmm……Sungguh Boros sekali. Hanya menuliskan sebuah charakter saja. perlu melakukan perintah “SELECT” berulang-ulang. Nah untuk itu, kita menggunakan Table Row Sorter. Jadi kita akan melakukan sebuah pencarian data ke dalam JTable yang kita miliki saja. Tidak ada perintah “SELECT” di dalam nya. Kita tinggal memfilter karakter yang kita ketikan di sebuah jTexfield dengan data yang ada di JTable. Baik kita mulai saja. Kita lansung ke contohnya saja yach.
Perlu di perhatikan disini. saya menggunakan DataSiswaTableModel. java sebagai DefaultTableModel nya. teman-teman bisa buat kelas untuk menampilkan data dengan menurunkan kelas DefaultTableModel atau AbstractTableModel. Saya telah membuat class turunan AbstractTableModel yang diberinama DataSiswaTableModel.java.

        Baik, Lansung saja. Pada screenshot di atas. saya Mempunyai Sebuah JFrame class. yang memiliki sebuah JLabel, JTextfield dan Sebuah JTable. untuk button-buttonya bukan bahasan kita :D . kita hanya menggunakan komponen2 yang saya sebutkan saja. Baiklah, langsung masuk ke Source code dari JFrame teman-teman, dan implementasikan pada class JFrame teman-teman sebuah interface “Document Listener”.
kalo di class saya, kurang lebih seperti ini :
1
public class DataSiswaView extends javax.swing.JInternalFrame implements DocumentListener
implementasikan semua method yang di butuhkan, maka akan muncul 3 method di JFrame teman-teman yaitu :
1
2
3
4
5
6
7
8
9
10
11
public void insertUpdate(DocumentEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
    }
 
    public void removeUpdate(DocumentEvent e) {
           throw new UnsupportedOperationException("Not supported yet.");
    }
 
    public void changedUpdate(DocumentEvent e) {
     throw new UnsupportedOperationException("Not supported yet.");
    }
Ok, sudah sampe sini. inisialisasi object table model yang teman-teman miliki. program nya di tempat saya, kurang lebih seperti ini
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
/**
 *
 * @author pratama
 */
public class DataSiswaView extends javax.swing.JInternalFrame implements DocumentListener {
 
    /** Creates new form DataSiswa
     */
    private List records = new ArrayList();
    //class table model
    private DataSiswaTableModel siswaTable;
 
    //table row sorter
    private TableRowSorter sorter;
 
    public DataSiswaView() {
        initComponents();
 
        //inisialisasi class DataSiswatableModel
        siswaTable = new DataSiswaTableModel(records);
        tableSiswa.setModel(siswaTable);
 
        /**
         * Men-SET table sorter.
         * cariTextField = nama komponen pencarian
         */
        cariTextField.getDocument().addDocumentListener(this);
        sorter = new TableRowSorter(siswaTable);
        tableSiswa.setRowSorter(sorter);
    }
kemudian buat sebuah method untuk memfilter data, dan di panggil di method yang mengimpementasikan class Document Listerner tadi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void insertUpdate(DocumentEvent e) {
        newFilter();
    }
 
    public void removeUpdate(DocumentEvent e) {
        newFilter();
    }
 
    public void changedUpdate(DocumentEvent e) {
//        throw new UnsupportedOperationException("Not supported yet.");
        newFilter();
    }
 
     private void newFilter() {
        RowFilter rf = null;
        //If current expression doesn't parse, don't update.
        try {
            rf = RowFilter.regexFilter(cariTextField.getText(), 0, 1);
        } catch (java.util.regex.PatternSyntaxException e) {
            return;
        }
        sorter.setRowFilter(rf);
    }
dan hasilnya, dapat teman-teman rasakan sendiri. Pencarian lebih CEPAT :D . saya menuliskan charakter ‘ T ‘. tanpa seikit loading pun, data pada JTable yang mempunyai charakter ‘T’ akan muncul :) . Teman-teman bisa download source code nya lengkap disini
Terimasih teman-teman, semoga bisa sedikit membantu :D . Salam
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

3 komentar:

Aschin mengatakan...

Mkasih bro ini yg butuhkan . . .

Aschin mengatakan...

Mkasih bro ini yg butuhkan . . .

Anhar Panduwinata mengatakan...

http://latihanbasisdata.blogspot.com/2016/06/pencarian-data-dari-tabel-java.html

Searching Data by ID and Name
Pencarian Data berdasarkan ID dan Nama

Posting Komentar