如何将过滤后的 jTable 的内容导出到 pdfpTable

Posted

技术标签:

【中文标题】如何将过滤后的 jTable 的内容导出到 pdfpTable【英文标题】:how to export the contents of a filtered jTable to a pdfpTable 【发布时间】:2019-02-10 08:56:39 【问题描述】:

我有一个 JTable,并且正在使用 JFilter 根据用户输入过滤其内容。现在我打算使用 iText 库将 JTable 的内容导出到 PdfPTable。使用过滤器时内容未正确复制。但是,如果未使用过滤器,则表格将正确复制,即用户不输入任何文本进行过滤。 我相信这是由于 JTable 中的内容实际上没有改变,因为我使用的是 rowSorted,如下所示:

过滤

TableRowSorter<TableModel> rowSorter = new TableRowSorter<>(jTable.getModel());
jTable.setRowSorter(rowSorter);
jtfFilter.getDocument().addDocumentListener(new DocumentListener()

    @Override
    public void insertUpdate(DocumentEvent e) 
        String text = jtfFilter.getText();

        if (text.trim().length() == 0) 
            rowSorter.setRowFilter(null);
         else 
            rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
        
    

    @Override
    public void removeUpdate(DocumentEvent e) 
        String text = jtfFilter.getText();

        if (text.trim().length() == 0) 
            rowSorter.setRowFilter(null);
         else 
            rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
        
    

实例化:

PdfPTable pdfTable = new PdfPTable(somejTable.getColumnCount());

复制:

for(int i=0;i<rowCnt;i++)
    
        for(int j=0;j<colCnt;j++)
        
            Object val = table.getModel().getValueAt(i, j);
            if((val!=null))
                pdfTable.addCell(val.toString());
            else
                pdfTable.addCell("null");

        
    

那么有没有办法获得 JTable 的准确过滤内容?我是否还需要在 PdfPTable 上使用类似 rowSorter 的东西? 谢谢。

【问题讨论】:

【参考方案1】:

您需要通过调用convertRowIndexToModel()将每个表格行索引转换为模型行索引。

见How can I get the filtered model

【讨论】:

太棒了!!谢谢迪娜:)

以上是关于如何将过滤后的 jTable 的内容导出到 pdfpTable的主要内容,如果未能解决你的问题,请参考以下文章

从管理产品网格将产品导出到 csv

jquery datatable如何在导出到excel pdf时从标题中删除下拉过滤器选择值

java 查询将JTable导出到Excel文件中

如何将jtable的内容复制到剪贴板

如何将 JTable 的内容保存到文件中,然后在需要时将它们加载回来? [关闭]

Java JTable 导出到现有的 MS Access 表