JTable通过与字符串的完全匹配进行过滤

用户名

我想JTable按一个字符串完全过滤我的过滤器是这样的:

Pattern.quote(textfield.getText());

但是,当我过滤“ G”时,我也会获得所有JTable带有条目“ KG”的行。我只想要带有条目“ G”的行。我看了如何使用表格:排序和过滤,但仍然看不到。

rai井

另一个示例:RowFilter#regexFilter(...)(Java Platform SE 8)

返回的过滤器使用Matcher.find()进行包含性测试。要测试完全匹配,请使用字符“ ^”和“ $”分别匹配字符串的开头和结尾。例如,“ ^ foo $”仅包括其字符串恰好是“ foo”的行,而不包括例如“ food”的行。有关支持的正则表达式构造的完整说明,请参见模式。

import java.awt.*;
import java.awt.event.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;

public class JTableFilterDemo2 {
  public JComponent makeUI() {
    String[] columnNames = {"Item"};
    Object[][] data = {{"G"}, {"KG"}, {"XG"}, {"Y"}, {"Z"}, {"*G"}};
    DefaultTableModel model = new DefaultTableModel(data, columnNames);
    TableRowSorter<TableModel> sorter = new TableRowSorter<>(model);
    JTable table = new JTable(model);
    table.setRowSorter(sorter);

    JTextField textField = new JTextField("G");

    JButton button = new JButton("Toggle filter");
    button.addActionListener(e -> {
      if (sorter.getRowFilter() != null) {
        sorter.setRowFilter(null);
      } else {
        String text = Pattern.quote(textField.getText());
        String regex = String.format("^%s$", text);
        sorter.setRowFilter(RowFilter.regexFilter(regex));
      }
    });

    JPanel p = new JPanel(new BorderLayout());
    p.add(textField, BorderLayout.NORTH);
    p.add(new JScrollPane(table));
    p.add(button, BorderLayout.SOUTH);
    return p;
  }
  public static void main(String[] args) {
    EventQueue.invokeLater(() -> {
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      f.getContentPane().add(new JTableFilterDemo2().makeUI());
      f.setSize(320, 240);
      f.setLocationRelativeTo(null);
      f.setVisible(true);
    });
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据完全匹配的字符串过滤熊猫数据框

通过多个过滤器传递字符串以进行匹配

根据完整的字符串匹配进行过滤,但不对子字符串进行过滤

根据匹配的字符串模式进行过滤

在 Groovy 中过滤字符串并对匹配项进行处理

通过字符串匹配过滤 pyspark DataFrame

通过匹配字符串或字符进行条件变异

通过匹配模式对字符串进行分组

如何通过允许部分匹配的字符串数组过滤字符串数组

通过将字符串与给定字符串进行匹配,将字符串拆分为列表或数组

替换字符串以与条件完全匹配

NSPredicate与字符串完全匹配

NSPredicate与字符串完全匹配

Ruby完全匹配字符串

以任何顺序完全匹配字符串

通过字符串过滤特定字符

从文件中检索字符串,当多行包含完全相同的字符串时,使用Linq进行过滤

过滤匹配字符串之间的行

根据字符串匹配过滤列表

匹配字符串regex完全匹配-特殊字符

通过 df 列进行交互,然后使用类似的字符串语句进行过滤

如何找到字符串的完全匹配并在Oracle中进行替换?

如何在文档中使用正则表达式对字符串进行完全匹配

通过匹配项的数量有效地对字符串匹配进行排名

如何根据字符串进行过滤

根据R中字符串变量的部分匹配进行过滤

SQL 过滤掉匹配条件的字符串,并通过特定的异常

通过列的部分字符串匹配来过滤csv文件

通过具有多个匹配项的prop字符串过滤数组