gpt4 book ai didi

java - Jasper 报告打开时间过长

转载 作者:行者123 更新时间:2023-12-01 15:21:38 25 4
gpt4 key购买 nike

我从面板的报告预览表单中调用此函数。

演示:主面板 - [调用] - ReportSelectionDialog(Frame) - [打开] Report(Frame)

问题是当我直接从 MainPanel 打开报告时

演示:主面板 - - 报告(框架)

JasperFillManager 只需一秒钟即可填充报告,但当我进行第一个演示时,JasperFillManager 需要 20-30 秒才能填充报告。我检查了所需的参数(连接、参数映射),它们在打开 ReportSelectionDialog 后立即加载。我需要 ReportSelectionDialog,但我不想等待这么长时间才打开报告。请帮忙。这是我加载报告的代码。还有其他方法可以填写报告吗?还有没有办法只加载 .jasper 文件而不是每次都编译报告?

private void openReport(){
String reportFile = getFileName(reportList.getSelectedValue().toString());
FileInputStream fs = null;

try {
fs = new FileInputStream(reportPath+reportFile);
JasperDesign jasperDesign = JRXmlLoader.load(fs);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
javax.swing.JFrame jframe = new javax.swing.JFrame();
jframe.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/timsoftware/images/timlogo.png")));
jframe.getContentPane().add(new JRViewer(jasperPrint));
jframe.pack();
jframe.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
jframe.setVisible(true);
} catch (FileNotFoundException | JRException | HeadlessException e) {
clsErrorHandler.printError(e.toString(), panelName, "PrintRecord");
} finally {
try {
fs.close();
} catch (IOException ex) {
Logger.getLogger(ReportPreviewForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
this.dispose();
}

最佳答案

 JasperDesign jasperDesign = JRXmlLoader.load(fs);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

将这些行移出方法并移至初始化序列中的某个位置。可能是构造函数?它应该可以解决问题。问题是您在方法中一遍又一遍地编译报告,这是没有必要的。如果您执行一次初始化 jasperReport 就足够了。

关于java - Jasper 报告打开时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827275/

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