java - 过滤后更新jtable模型

标签 java swing jtable tablemodel rowsorter

我想将过滤器应用到 JTable。

            String text = textField.getText();
            rowSorter = new TableRowSorter<>(tableModel);
            this.getjTable1().setRowSorter(rowSorter);
            this.getjTable1().removeAll();
            if (text.trim().length() == 0) {
                rowSorter.setRowFilter(null);
            } else {
                //String regex = String.format("^%s$", text);
                if(jCheckBoxExtract.isSelected()){
                    text="^"+text+"$";
                }
                else{
                    if(!text.contains(".")||text.contains("$"))text="^"+text;
                }
                RowFilter rowFilter = RowFilter.regexFilter(text, 1);
                rowSorter.setRowFilter(rowFilter);
            }
            this.getjTable1().repaint();   

这段代码可以工作,但是现在,如果我想获取 jtable 中的值,模型不会更新。 jtable中使用的模型始终是旧模型,而不是过滤后的新模型。

最佳答案

要获取正确的值,请在需要表中的行时执行此操作:

model.getSelectedEntry(table.convertRowIndexToModel(table.getSelectedRow()));

关于java - 过滤后更新jtable模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44881901/

相关文章:

Java 显示带有格式化字符串的 Jlabel.setText

java - 将一个 JTable 替换为其他(导入)Java

java - 我想从 txt 文件读取数据并写入现有的 JTable

java - 在 getValueAt 上执行查询并异步返回结果

java - Spring 在将数据发布到 Controller 时将请求标记为不正确

java - 将 Json 数组映射到 Java 模型

java - JPanels 无法设置任何大小值

java - 如何使用自上而下的Web服务?

java - 使用 exe4j 创建 exe 文件时生成错误文本文件

java - 为什么 textPane.getDocument().getText() 返回空字符串?