如何过滤JTable中的行?

时间:2009-07-10 05:51:30

标签: java swing jtable rowfilter

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

4 个答案:

答案 0 :(得分:8)

从这里:
sorting and filtering

  

在以下示例代码中,您   显式创建一个分拣机对象   你以后可以用它来指定一个   过滤器:

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);
}

答案 1 :(得分: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);
}  

答案 2 :(得分:2)

您可以使用JTable.setAutoCreateRowSorter,它将使用JTable

的默认行排序/过滤器

答案 3 :(得分:1)

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