过滤后更新jtable模型

时间:2017-07-03 09:18:39

标签: 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中使用的模型始终是旧模型,但不是过滤后的新模型。

1 个答案:

答案 0 :(得分:2)

要获得正确的值,只要您需要表中的行,就可以执行此操作:

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