我有一个JTable和正在使用JFilter根据用户输入过滤的内容。现在我打算JTable的内容导出到一个利用iText库PdfPTable。内容没有得到在使用filter.However表被正确地复制,如果不使用过滤器,即正确地复制。用户不输入过滤任何文本。我认为,其由于内容没有实际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呢?谢谢。
你需要通过调用convertRowIndexToModel()
每个表行索引模型行索引转换。