The FilterList
works with any
Matcher
or MatcherEditor
.
In this case, we'll use a
TextComponentMatcherEditor
. It accepts any
JTextComponent
for editing the filter text - in
most cases you'll use a JTextField
. Creating the
FilterList
and getting your
EventTableModel
to use it takes only a few lines
of new code.
/** * Display a frame for browsing issues. */ public void display() { SortedList sortedIssues = new SortedList(issuesEventList, new IssueComparator()); JTextField filterEdit = new JTextField(10); FilterList textFilteredIssues = new FilterList(sortedIssues, new TextComponentMatcherEditor(filterEdit, new IssueTextFilterator())); // create a panel with a table JPanel panel = new JPanel(); panel.setLayout(new GridBagLayout()); EventTableModel issuesTableModel = new EventTableModel(textFilteredIssues, new IssueTableFormat()); JTable issuesJTable = new JTable(issuesTableModel); TableComparatorChooser tableSorter = new TableComparatorChooser(issuesJTable, sortedIssues, true); JScrollPane issuesTableScrollPane = new JScrollPane(issuesJTable); panel.add(new JLabel("Filter: "), new GridBagConstraints(...)); panel.add(filterEdit, new GridBagConstraints(...)); panel.add(issuesTableScrollPane, new GridBagConstraints(...)); // create a frame with that panel JFrame frame = new JFrame("Issues"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setSize(540, 380); frame.getContentPane().add(panel); frame.show(); }