我有一个JTable,其中包含许多字符串。我在表格上方创建了一个用于用户输入的文本框。我想要一个行过滤器,它可以删除用户在文本框中输入的行。请帮帮我。
答案 0 :(得分:8)
在以下示例代码中,您 显式创建一个分拣机对象 你以后可以用它来指定一个 过滤器:
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将负责其余的工作。