gpt4 book ai didi

java - JTable排序和Jasper报表输出

转载 作者:行者123 更新时间:2023-11-30 07:29:36 24 4
gpt4 key购买 nike

在我的一个基于 Java swing 桌面的应用程序中,我使用了一个 JTable 并为一列添加了排序功能。我需要根据用户添加的数值对其进行排序,然后获取 jasper 报告输出。

当前排序打印报表后,报表未显示排序顺序。但是从数据库中获取值时的顺序。如何打印用户表排序的报表?

这是我的jasper报告生成代码

try {
DefaultTableModel de = (DefaultTableModel)Dashboard.catalogTbl.getModel();
JRTableModelDataSource jr = new JRTableModelDataSource(de);
String reportName = reportPath + "reports/AuctionSale/Catalogue/catalouge_frm_tbl.jrxml";
String compiledName = reportPath + "reports/AuctionSale/Catalogue/catalouge_frm_tbl.jasper";
Map<String, Object> params = new HashMap<String, Object>();
params.put("Lot_No", "Lot No");
params.put("Mark", "Mark");
params.put("Invoice", "Invoice");
params.put("Grade", "Grade");
params.put("Weight", "Weight");
params.put("Price", "Price");
params.put("Buyer", "Buyer");
JasperCompileManager.compileReportToFile(reportName, compiledName);
JasperPrint jasperPrint = JasperFillManager.fillReport(compiledName, params, jr);
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

我猜报告是基于 TableModel 生成的,而典型的排序只影响 JTable 本身,而不影响模型。

您可以做的是装饰您传递给报告生成器的表模型,以便它接管您的 JTable 的排序。风格的东西

public class TableModelDecorator implements TableModel{
private TableModel delegate;
private JTable table;

@Override
public Object getValueAt( int rowIndex, int columnIndex ) {
return delegate.getValueAt( table.convertRowIndexToView( rowIndex ), table.convertColumnIndexToView( columnIndex ) );
}
}

然后是所有相关方法。

关于java - JTable排序和Jasper报表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com