パネルのレポート プレビュー フォームからこの関数を呼び出しています。
デモ : メイン パネル - [呼び出す] - ReportSelectionDialog(Frame) - [開く] Report(Frame)
問題は、MainPanel から直接レポートを開くときです。
demo : メインパネル - - レポート(フレーム)
JasperFillManager はレポートを埋めるのに 1 秒ほどしかかかりませんが、最初のデモを行ったとき、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();
}