Как экспортировать содержимое отфильтрованной jTable в pdfpTable
У меня есть 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 ответ
Необходимо преобразовать каждый индекс строки таблицы в индекс строки модели, вызвав convertRowIndexToModel()
,
Посмотрите, как я могу получить отфильтрованную модель