如何将过滤后的 jTable 的内容导出到 pdfpTable
how to export the contents of a filtered jTable to a pdfpTable
我有一个 JTable,正在使用 JFilter 根据用户输入过滤其内容。现在我打算使用 iText 库将 JTable 的内容导出到 PdfPTable。使用 filter.However 时内容不会被正确复制,如果不使用过滤器,table 会被正确复制,即用户不输入任何文本进行过滤。
我相信这是由于 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 的东西吗?
谢谢
您需要通过调用 convertRowIndexToModel()
.
将每个 table 行索引转换为模型行索引
见How can I get the filtered model
我有一个 JTable,正在使用 JFilter 根据用户输入过滤其内容。现在我打算使用 iText 库将 JTable 的内容导出到 PdfPTable。使用 filter.However 时内容不会被正确复制,如果不使用过滤器,table 会被正确复制,即用户不输入任何文本进行过滤。 我相信这是由于 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 的东西吗? 谢谢
您需要通过调用 convertRowIndexToModel()
.
见How can I get the filtered model