5

我有一个 JTable,里面有很多字符串。我在表格上方创建了一个用于用户输入的文本框。我想要一个行过滤器,它可以删除用户在文本框中输入的字符串的行。请帮我解决这个问题。

4

4 回答 4

10

从这里开始:
排序和过滤

在以下示例代码中,您显式创建了一个排序器对象,以便您以后可以使用它来指定过滤器:

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

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

private void newFilter() {
    RowFilter<MyTableModel, Object> 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);
}
于 2009-07-10T06:05:58.173 回答
5

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

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

    jTable1.setRowSorter(sorter);
}  
于 2016-06-23T10:30:34.743 回答
2

您可以使用JTable.setAutoCreateRowSorterwhich 将使用默认的行排序器/过滤器JTable

于 2009-07-10T06:25:44.203 回答
1

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

于 2009-07-10T11:54:45.457 回答