1  import javax.swing.*;
  2  import javax.swing.table.*;
  3  import java.awt.BorderLayout;
  4  
  5  public class TestTableSortFilter extends JApplet {
  6    // Create table column names
  7    private String[] columnNames =
  8      {"Country", "Capital", "Population in Millions", "Democracy"};
  9  
 10    // Create table data
 11    private Object[][] data = {
 12      {"USA", "Washington DC", 280, true},
 13      {"Canada", "Ottawa", 32, true},
 14      {"United Kingdom", "London", 60, true},
 15      {"Germany", "Berlin", 83, true},
 16      {"France", "Paris", 60, true},
 17      {"Norway", "Oslo", 4.5, true},
 18      {"India", "New Delhi", 1046, true}
 19    };
 20  
 21    // Create a table
 22    private JTable jTable1 = new JTable(data, columnNames);
 23  
 24    // Create a TableRowSorter
 25    private TableRowSorter<TableModel> sorter =
 26        new TableRowSorter<TableModel>(jTable1.getModel());
 27  
 28    private JTextField jtfFilter = new JTextField();
 29    private JButton btFilter = new JButton("Filter");
 30  
 31    public TestTableSortFilter() {
 32      // Enable auto sorter
 33      jTable1.setRowSorter(sorter);
 34  
 35      JPanel panel = new JPanel(new java.awt.BorderLayout());
 36      panel.add(new JLabel("Specify a word to match:"),
 37        BorderLayout.WEST);
 38      panel.add(jtfFilter, BorderLayout.CENTER);
 39      panel.add(btFilter, BorderLayout.EAST);
 40  
 41      add(panel, BorderLayout.SOUTH);
 42      add(new JScrollPane(jTable1), BorderLayout.CENTER);
 43  
 44      btFilter.addActionListener(new java.awt.event.ActionListener() {
 45        @Override
 46        public void actionPerformed(java.awt.event.ActionEvent e) {
 47          String text = jtfFilter.getText();
 48          if (text.trim().length() == 0)
 49            sorter.setRowFilter(null);
 50          else
 51            sorter.setRowFilter(RowFilter.regexFilter(text));
 52        }
 53      });
 54    }
 55  
 56    //Main method
 57    public static void main(String[] args) {
 58      TestTableSortFilter applet = new TestTableSortFilter();
 59      JFrame frame = new JFrame();
 60      //EXIT_ON_CLOSE == 3
 61      frame.setDefaultCloseOperation(3);
 62      frame.setTitle("TestTableSortFilterSortFilter");
 63      frame.getContentPane().add(applet, java.awt.BorderLayout.CENTER);
 64      applet.init();
 65      applet.start();
 66      frame.setSize(400,320);
 67      frame.setLocationRelativeTo(null);
 68      frame.setVisible(true);
 69    }
 70  }