Как экспортировать содержимое отфильтрованной jTable в pdfpTable - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть JTable, и я использую JFilter для фильтрации его содержимого на основе пользовательского ввода.Теперь я намерен экспортировать содержимое JTable в PdfPTable, используя библиотеку iText.Содержимое не копируется правильно при использовании фильтра. Однако таблица копируется правильно, если фильтры не используются, то есть пользователь не вводит текст для фильтрации.Я считаю, что это из-за того, что содержимое в 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?Нужно ли мне использовать что-то вроде rowSorter в PdfPTable?Благодаря.

1 Ответ

0 голосов
/ 10 февраля 2019

Необходимо преобразовать каждый индекс строки таблицы в индекс строки модели, вызвав convertRowIndexToModel().

См. Как получить отфильтрованную модель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...