如何过滤 JTable 中的行?

发布于 2024-07-26 19:43:57 字数 96 浏览 3 评论 0原文

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

I have a JTable with many strings in it. I have created a textbox for user entry, above the table. I want a row filter which can remove the rows having strings entered by the user in the text box. Please help me out for this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

折戟 2024-08-02 19:43:57

从这里开始:
排序和过滤

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

MyTableModel 模型 = new MyTableModel(); 
  排序器 = new TableRowSorter(model); 
  表=新的JTable(模型); 
  table.setRowSorter(排序器); 
  

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

private void newFilter() { 
      RowFilter   rf = 空; 
      //如果当前表达式无法解析,则不更新。 
      尝试 { 
          rf = RowFilter.regexFilter(filterText.getText(),0); 
      } catch (java.util.regex.PatternSyntaxException e) { 
          返回; 
      } 
      排序器.setRowFilter(rf); 
  } 
  

from here:
sorting and filtering

In the following example code, you
explicitly create a sorter object so
you can later use it to specify a
filter:

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

Then you filter based on the current
value of a text field:

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);
}
软甜啾 2024-08-02 19:43:57

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

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

This few line solution seems to work:

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);
}  
画中仙 2024-08-02 19:43:57

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

You can use JTable.setAutoCreateRowSorter which will use the default row sorter/filter of the JTable

↘人皮目录ツ 2024-08-02 19:43:57

要获取 kd304 的评论,您可以使用 GlazedLists。 在那里,您将使用 FilterList 作为 JTable 的输入,而 FilterList 将处理其余的事情。

To pick up the comment from kd304, you could use GlazedLists. There you'll use a FilterList as the input for your JTable, and the FilterList will take care of the rest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文