Freddy Kresna

Thursday Sep 27, 2007

Sorting and Filtering in JTable

Untitled Document

Dalam Java 6, JTable telah berkembang, Fungsi umum filtering dan sorting akhirnya ditambahkan, berikut ini adalah contoh source codenya :

/*
* TabelContoh.java
*
* Created on September 27, 2007, 7:59 AM
*
*/

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
*
* @author Administrator
*/
public class TabelContoh{

   /** Creates a new instance of TabelContoh */
   public TabelContoh() {
      JFrame frame = new JFrame("Mengurutkan dan Filtering");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Object data[][] = {
         {"1","14097","Agus Santoso"},
         {"2","14139","Angelina Stephanie"},
         {"3","14140","Angeline Jelita"},
         {"4","14147","Arnold Sanjaya"},
         {"5","14159","Brigitta Valentia"},
         {"6","14170","Christian"},
         {"7","14174","Christie Tanjung"},
         {"8","14180","Citra Kumala"},
         {"9","14186","Daniel Kusnanto"},
         {"10","14189","David Sanjaya"}
      };

      String[] COLUMN_NAME = new String[] {"No","NIS","Nama"};
      TableModel model = new DefaultTableModel(data,COLUMN_NAME);
      JTable table = new JTable(model);

      //Sorting
      final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
      table.setRowSorter(sorter);  
    
      JScrollPane pane = new JScrollPane(table);
      frame.add(pane,BorderLayout.CENTER);

      JPanel pnl = new JPanel(new BorderLayout());
      JLabel lbl = new JLabel("Filter");
      JLabel lbl2 = new JLabel("Tekan Enter untuk Filtering");
      final JTextField txtFilter = new JTextField("T");
      pnl.add(lbl,BorderLayout.WEST);
      pnl.add(txtFilter,BorderLayout.CENTER);
      pnl.add(lbl2, BorderLayout.EAST);

      frame.add(pnl, BorderLayout.NORTH);

      //filtering
      txtFilter.addKeyListener(new java.awt.event.KeyAdapter() {
         public void keyPressed(java.awt.event.KeyEvent evt) {
            if (evt.getKeyCode() == evt.VK_ENTER)
            {
               String text = txtFilter.getText();
               if (text.length() == 0) {
                  sorter.setRowFilter(null);
               } else {
                  sorter.setRowFilter(RowFilter.regexFilter(text));
               }
            }
         }
      });

      frame.setSize(400,250);
      frame.setVisible(true);
   }

   public static void main(String[] args)
   {
      new TabelContoh();
   }
}

referensi : Zukowski, John, "Java™ 6 Platform Revealed ", 2006, California, Appress

Kurang lebih tampilannya seperti ini :

Semoga membantu :)

 

Freddy Kresna T.

Comments:

Post a Comment:
Comments are closed for this entry.

Calendar

Feeds

Search

Links

Navigation

Referers