获得JTable的真实选定值

时间:2014-02-06 13:14:03

标签: java swing jtable rowsorter

我现在正像每个人一样获得jTable的价值:

String  d = jTable1.getModel().getValueAt( jTable1.getSelectedRow() , row ).toString();

问题是现在我正在使用roworter对我的jTable进行排序:

sorter = new TableRowSorter<TableModel>(modelo);
jTable1.setRowSorter(sorter);

private void filterTable(){
        //If current expression doesn't parse, don't update.
        try {
            rf = RowFilter.regexFilter("(?iu)"+jFilter.getText(),0,1,2,3,4);//no filtrar la columna con imágenes porque hace cualquiera
        } catch (java.util.regex.PatternSyntaxException e) {
            return;
        }
        sorter.setRowFilter(rf);
    }

问题: 一旦表被过滤,函数getSelectedRow返回正确的行,但getModel函数返回原始模型,而不是过滤后的模型...

问题: 过滤后如何从表中获取正确的值?

2 个答案:

答案 0 :(得分:1)

您可能需要使用convertRowIndexToModel将“row”值转换为模型索引值。

String  d = Table1.getModel().getValueAt(convertRowIndexToModel(jTable1.getSelectedRow()) , column ).toString();

答案 1 :(得分:1)

对于未来的流浪者:

问题在于从jTable获取值:

如果你有一个roworter,那就错了:

String  d = jTable1.getModel().getValueAt( jTable1.getSelectedRow() , row ).toString();

这就是你应该做的事情:

String  d = jTable1.getValueAt( jTable1.getSelectedRow() , row ).toString();