Java JTable - 仅显示与字符串匹配的行

2023-12-03

我有一个JTable用数据库中的数据填充。我添加了一个搜索功能,如果在数据输入时单词与某些行匹配,则显示行JTextField。但是,当您键入与任何行数据都不匹配的字符串或单词时,我想要做的是隐藏所有行,并且JTable将仅显示列名称。就像当某些内容与 IT 匹配时,仅显示具有用户键入的字符串的行并隐藏其他行。

这是我正在使用的代码:

               if (text.length() == 0) {
                 sorter.setRowFilter(null);
               } else {
                 try {
                   sorter.setRowFilter(
                       RowFilter.regexFilter(text));
                 } catch (PatternSyntaxException pse) {
                   System.err.println("Bad regex pattern");
                 }
               }
             }

你想使用一个DocumentListener,以及行过滤器。您可以查看如何编写一个文档监听器.

基本上,侦听器侦听文本字段的基础文档中的更改。从您重写的方法中DocumentListener,您可以获取文本,就像您当前正在做的那样,并像您当前正在做的那样设置正则表达式 ex 过滤器

这是一个简单的例子(忽略小程序。我刚刚从这个帖子并添加了文档侦听器)。注意:同一篇文章提供了一个答案,如果您正在寻找该功能,该答案将允许您以不区分大小写的方式进行过滤

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class TestTableSorterFilter extends JApplet {

    private String[] columnNames
            = {"Country", "Capital", "Population in Millions", "Democracy"};

    private Object[][] data = {
        {"USA", "Washington DC", 280, true},
        {"Canada", "Ottawa", 32, true},
        {"United Kingdom", "London", 60, true},
        {"Germany", "Berlin", 83, true},
        {"France", "Paris", 60, true},
        {"Norway", "Oslo", 4.5, true},
        {"India", "New Delhi", 1046, true}
    };

    private JTable jTable = new JTable(data, columnNames);

    private TableRowSorter<TableModel> rowSorter
            = new TableRowSorter<>(jTable.getModel());

    private JTextField jtfFilter = new JTextField();
    private JButton jbtFilter = new JButton("Filter");

    public TestTableSorterFilter() {
        jTable.setRowSorter(rowSorter);

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(new JLabel("Specify a word to match:"),
                BorderLayout.WEST);
        panel.add(jtfFilter, BorderLayout.CENTER);

        add(panel, BorderLayout.SOUTH);
        add(new JScrollPane(jTable), BorderLayout.CENTER);

        jtfFilter.getDocument().addDocumentListener(new DocumentListener(){

            @Override
            public void changedUpdate(DocumentEvent arg0) {}

            @Override
            public void insertUpdate(DocumentEvent arg0) {
                String text = jtfFilter.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter(text));
                }   
            }

            @Override
            public void removeUpdate(DocumentEvent arg0) {
                String text = jtfFilter.getText();
                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter(text));
                }   
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java JTable - 仅显示与字符串匹配的行 的相关文章

  • Java - 如何将特殊字符放入字符串中

    Java 似乎有很好的字符串处理能力 尽管如此 我还是遇到了最简单的问题 我需要动态字符串 它们在运行时更改 因此字符串类型不是一个好的选择 因为它们是不可变的 所以我使用字符数组 设置起来有点痛苦 但至少它们是可以修改的 我想创建一个字符
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • Google App Engine with Java - 运行 javac.exe 编译器时出错

    在 Windows XP 上 刚刚下载并解压谷歌应用程序引擎java sdk to C Program Files appengine java sdk 我已经安装了jdk C Program Files Java jdk1 6 0 20
  • Spring3/Hibernate3/TestNG:有些测试给出 LazyInitializationException,有些则没有

    前言 我在单元测试中遇到了 LazyInitializationException 的问题 而且我很难理解它 正如你从我的问题中看到的那样Spring 中的数据库会话 https stackoverflow com questions 13
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 异步迭代器

    我有以下代码 while slowIterator hasNext performLengthTask slowIterator next 由于迭代器和任务都很慢 因此将它们放入单独的线程中是有意义的 这是对迭代器包装器的快速而肮脏的尝试
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 如何用表达式语言获取布尔属性?

    如果我有一堂这样的课 class Person private int age public int getAge return age public boolean isAdult return age gt 19 我可以得到age像这样
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 春季 CORS。在允许的来源中添加模式

    查看CORS的弹簧指南 以下代码启用所有允许的来源 public class MyWebMVCConfigurer extends WebMvcConfigurerAdapter Override public void addCorsMa
  • 失败时石英重试

    假设我有一个这样配置的触发器
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne

随机推荐

  • 用其复选框包装一些输入并发送到数据库

    重点是 如何选择与选中的复选框同一行中的所有输入元素 MARK NAME QUANTITY PRICE inputForName1 inputForQuantity1 inputForPrice1
  • 按短语列表过滤 pandas 列

    我有一串叙述专栏 每个叙述基本上都是一篇文章 我想获取存在某些短语的 df 的子集 当前的方法没有按预期工作 我正在过滤不完全包含该短语或仅包含该短语的子集的行 我尝试过以下方法 phrase went to the store to bu
  • 多线程应用程序中的静态计数器线程安全吗?

    public class counting private static int counter 0 public void boolean counterCheck counter if counter 10 counter 0 方法 c
  • 基于 Altair 中的 alt.Color 字段排序

    我正在尝试根据水平条形图所属的组对其进行排序 我已经包含了数据框 我认为可以进行分组排序的代码和图像 该图表目前是根据物种列按字母顺序排序的 但我希望它按组排序 以便所有 坏 都在一起 同样 所有 好 都在一起 理想情况下 我想更进一步 以
  • Symfony:PHP 致命错误:允许的内存大小

    我尝试运行此命令在我的 symfony 项目 1 4 中构建模型 php symfony propel build model or all 我有这个错误 PHP Fatal error Allowed memory size of 335
  • 关于刷新令牌的一些问题

    当我使用 jsonwebtokens 时 我对刷新令牌的使用和 或背后的原因有一些疑问 更令人困惑 首先 为什么需要它 我完全理解用于获取新访问令牌的短期访问令牌和长期刷新令牌的全部内容 但我觉得这使得刷新令牌同样容易受到攻击 甚至可能比普
  • 如何使用 Parcel 从 @font-face 加载字体?

    我正在使用 Parcel 进行捆绑 并且我想将自定义字体包含到我的项目中 在我的 SCSS 中 font face font family Storytella src url fonts Storytella otf format otf
  • Neo4j 嵌入式数据库在应用程序异常终止后挂起

    我打算公开我的第一个基于 Neo4j 嵌入式数据库的应用程序 但遇到了严重的阻塞问题 这是我之前遇到的数据库删除问题有效清理Neo4j数据库 I use OS Windows 8 1 jdk1 8 0 51 neo4j version 2
  • mysqli_affected_rows 和 mysqli_num_rows 有什么区别?

    The mysqli num rows 的 PHP 文档 says 返回结果集中的行数 The mysqli affected rows 的 PHP 文档 says 返回受最后一个 INSERT UPDATE REPLACE 或 DELET
  • 如何在 MVC3 中的 JQuery ajax 调用上重定向到新页面(以及模型)

    我忘记了密码页面 用户在其中输入用户名并单击 验证 按钮来检查他所在的组 根据组 我们需要显示不同的部分视图 现在假设它是电话号码 这一页 填写有效信息后 如果成功 我将重定向到一个新页面 他将在其中更新他的密码 如果失败 我需要显示错误消
  • 新值仅在 sendAsynchronousRequest 中可用 - Swift

    var arrayData String let bodyData parameter test let URL NSURL NSURL string Link to php file let request NSMutableURLReq
  • 表达式树 lambda 不能包含 null 传播运算符

    线路price co price 0 下面的代码给了我上面的错误 但是如果我删除 from co 效果很好 我试图跟随这个 MSDN 示例他们在哪里使用 在线的select new person FirstName PetName subp
  • 自(iOS 7 发布)以来,有没有办法在 PC/Mac 上无需使用 iTunes 即可获取 UDID?

    我正在为我的公司开发一款应用程序 我们正在经历通过将人们的 iPad 添加到公司的 iOS 开发中心帐户来慢慢让人们进入 测试版 的过程 从那里我们为本地 Intranet 分发进行临时构建 在我的最后一次演出中 我会引导人们使用其中一个
  • 在 R 中更新数据集的最快方法是什么?

    我有一个 20000 5 的数据集 目前它正在以迭代方式进行处理 并且数据集在每次迭代中不断更新 data frame 中的单元格每次迭代都会更新 并寻求一些帮助来更快地运行这些东西 由于这是一个小的 data frame 我不确定 dat
  • 基准测试:同一过程多次,只有一次预热?

    我目前正在开发一个 Java 应用程序 基准 其目的是测量与数据库相关的某些进程 我的应用程序应该运行以下内容 我有几个用例 数据库中的简单插入 简单更新等 我想多次运行 运行之间的唯一区别是同时运行的线程数 我需要使用 1 2 4 8 1
  • 如何使用外部库并将其与 Contiki 应用程序一起编译

    我希望能够连接一些传感器并使用 Contiki OS 将传感器数据发送到 Thingspeak 云 C 库可用于连接传感器 libthingspeak 库可用于更新 Thingspeak 上的源 我能够使用 example udp ipv6
  • 使用跟踪侦听器将调试输出重定向到文件时出现问题

    我创建了一个调试侦听器 使用以下代码将输出从调试 控制台窗口重定向到文件 带有调用堆栈 void SomeMethod Create a file for output txt Stream debugFile File Create fi
  • 如何在MapReduce程序中解析PDF文件?

    我想在我的 hadoop 2 2 0 程序中解析 PDF 文件 我发现this 按照它所说的 到现在为止 我有这三个课程 PDFWordCount 包含map和reduce函数的主类 就像原生 hadoop 字数统计样本但代替TextInp
  • java/swing 形式的动态字段添加

    我对 java 很陌生 并且使用 netbeans 来设计 UI 我想做的是 在形式中 有一个 jComboBox 和一个 JTextField 用户可以在其中输入他选择的服务和观察结果 到目前为止 一切都很好 JComboBox 由数据库
  • Java JTable - 仅显示与字符串匹配的行

    我有一个JTable用数据库中的数据填充 我添加了一个搜索功能 如果在数据输入时单词与某些行匹配 则显示行JTextField 但是 当您键入与任何行数据都不匹配的字符串或单词时 我想要做的是隐藏所有行 并且JTable将仅显示列名称 就像