使用 RowSorter 和 RowFilter 搜索 JTable 的相同代码仅适用于 4 个 JTable 中的 2 个

问题描述

我正在 NetBeans 中处理一个 Java GUI 项目,并且有两个不同的 JPanelsJTables一个 JTextField用户可以输入这些 JTextField 以便在JTable。

看起来像这样

用户输入 KeyTyped 时,会调用 filterSearchResults() 事件,该事件调用我的 tablerowsorter 方法。每次调用方法时,此方法都会为我正在使用的 4 个 JTables 中的每一个创建一个新的 jScrollPanes(我知道它效率低下,但我只是在寻找目前有效的东西)。>

搜索功能对前两个表(jTable1 和 jTable2)工作完美,但对后两个表完全不起作用,尽管我似乎对这两个表执行完全相同的过程。

表格包含在 jTabbedPanes 中,jTable1 位于不同标签中。

这是 GUI 层次结构的样子。

对于 jTable2JTable1,表格会根据在文本字段中输入的搜索查询进行更新,如下所示

用户在其他 2 个表格的文本字段中键入内容时,没有任何反应。我的印象是没有必要为表调用更新函数,而且我不相信在任何时候都有为 JTable2finalMaleGroupsTable 调用的更新函数

我无法解释这种差异,我不知道为什么过滤没有出现在 finalFemaleGroupsTable //UPDATE JTABLE FROM SEARCH FILTER void filterSearchResults(int x){ firstRowSorter = new tablerowsorter<>(jTable1.getModel()); secondRowSorter = new tablerowsorter<>(jTable2.getModel()); thirdRowSorter = new tablerowsorter<>(finalMaleGroupsTable.getModel()); fourthRowSorter = new tablerowsorter<>(finalFemaleGroupsTable.getModel()); String text = jTextField1.getText(); jTable1.setRowSorter(firstRowSorter); if (text.trim().length() == 0) { firstRowSorter.setRowFilter(null); } else { firstRowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } jTable2.setRowSorter(secondRowSorter); if (text.trim().length() == 0) { secondRowSorter.setRowFilter(null); } else { secondRowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } text = jTextField5.getText(); finalMaleGroupsTable.setRowSorter(thirdRowSorter); if (text.trim().length() == 0) { thirdRowSorter.setRowFilter(null); } else { thirdRowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } finalFemaleGroupsTable.setRowSorter(fourthRowSorter); if (text.trim().length() == 0) { fourthRowSorter.setRowFilter(null); } else { fourthRowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } } 上。过滤功能如下:

import requests

payload = {'fisrtName': 'kerolos','lastName': 'Shenouda'}

r = requests.post('https://httpbin.org/post',data = payload)

print(r.text)

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)