如何过滤JTable中的行?

我有一个JTable,其中包含许多字符串。我在表格上方创建了一个用于用户输入的文本框。 我想要一个行filter,可以删除用户在文本框中输入的行。 请帮我解决这个问题。

从这里:
排序和过滤

在以下示例代码中,您显式创建了一个分类器对象,以便稍后使用它来指定filter:

MyTableModel model = new MyTableModel(); sorter = new TableRowSorter(model); table = new JTable(model); table.setRowSorter(sorter); 

然后根据文本字段的当前值进行过滤:

 private void newFilter() { RowFilter rf = null; //If current expression doesn't parse, don't update. try { rf = RowFilter.regexFilter(filterText.getText(),0); } catch (java.util.regex.PatternSyntaxException e) { return; } sorter.setRowFilter(rf); } 

这几行解决方案似乎有效:

 private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { TableRowSorter sorter = new TableRowSorter(((DefaultTableModel) jTable1.getModel())); sorter.setRowFilter(RowFilter.regexFilter(jTextField1.getText())); jTable1.setRowSorter(sorter); } 

您可以使用JTable.setAutoCreateRowSorter ,它将使用JTable的默认行分类器/filter

要从kd304中获取评论,您可以使用GlazedLists 。 在那里,您将使用FilterList作为JTable的输入,FilterList将负责其余部分。