У меня есть 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?Благодаря.