View 从当前JTable视图创建新JTable

View 从当前JTable视图创建新JTable,view,filter,save,jtable,tablemodel,View,Filter,Save,Jtable,Tablemodel,我正在从事一个涉及JTable的项目,并对其执行排序和筛选操作。我已经完成了排序和筛选部分,现在我希望能够从旧表的当前视图创建一个新表。 e、 g.如果我对我的旧表应用某些过滤器,则会过滤掉一些行。我不希望在新表中过滤掉这些行。我想我可以将新行索引转换为模型索引,并将单元格值手动添加到新表的模型中,但我想知道是否还有其他有效的方法来实现这一点? 以下是我最后做的事情: //this code block will print out the rows in current view int ne

我正在从事一个涉及JTable的项目,并对其执行排序和筛选操作。我已经完成了排序和筛选部分,现在我希望能够从旧表的当前视图创建一个新表。
e、 g.如果我对我的旧表应用某些过滤器,则会过滤掉一些行。我不希望在新表中过滤掉这些行。我想我可以将新行索引转换为模型索引,并将单元格值手动添加到新表的模型中,但我想知道是否还有其他有效的方法来实现这一点?
以下是我最后做的事情:

//this code block will print out the rows in current view
int newRowCount = table.getRowCount();
int newColumnCount = table.getColumnCount();
for (int i = 0; i < newRowCount; i++) {
    for (int j = 0; j < newColumnCount; j++) {
    int viewIndex = table.convertRowIndexToModel(i);
    String value = (String) model.getValueAt(viewIndex, j);
    System.out.print(value + "\t");

    }
    System.out.println();

}
//此代码块将打印出当前视图中的行
int newRowCount=table.getRowCount();
int newColumnCount=table.getColumnCount();
for(int i=0;i
无需任何索引转换,只需查询表而不是底层模型即可

for (int i = 0; i < table.getRowCount(); i++) {
    for (int j = 0; j < table.getColumnCount(); j++) {
        Object value = table.getValueAt(i, j);
        System.out.print(value + "\t");
    }
}
for(int i=0;i

注意:为了可读性,最好将i/j重命名为行/列,因为它太懒了;-)

因为有些行被过滤掉了,根本不显示,可见行可能映射到一个完全不同的索引,所以我想我们无论如何都需要索引转换。(至少这是我在阅读了JTable javadocs之后读到的内容)。不过,我也会试试你的代码。谢谢注意:用rowIndex/columnIndex替换i/j是一个好主意,这样可以使代码可读,并且只调用一次getRowCount()和getColumnCount(),以提高效率,这是我刚刚想到的;)@user744820据我所知,您需要一个包含旧表中可见行的新模型。如果该假设是正确的,那么代码片段将执行您想要的操作。如果不是,我误解了:-)