1 import javax.swing.*;
2 import javax.swing.table.*;
3 import java.awt.BorderLayout;
4
5 public class TestTableSortFilter extends JApplet {
6
7 private String[] columnNames =
8 {"Country", "Capital", "Population in Millions", "Democracy"};
9
10
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
22 private JTable jTable1 = new JTable(data, columnNames);
23
24
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
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 }