我正在尝试调用我的报告并显示它,但它无法正常工作!!!
这是代码:
/ * *要更改此许可证标题,请在“项目属性”中选择“许可证标题”。 *要更改此模板文件,请选择“工具”|模板 *并在编辑器中打开模板。 * /
package Frames;
import java.beans.PropertyVetoException;
import java.io.InputStream;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.swing.*;
/**
*
* @author Ma3d Sa3eed
*/
public class ReportViewer extends javax.swing.JFrame {
java.awt.Container c;
public ReportViewer(String rptPath, HashMap parameter) {
try {
Class.forName("oracle.jdbc.OracleDriver");
java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora10g", "employees", "manager");
JasperPrint print = JasperFillManager.fillReport(rptPath, parameter, con);
JRViewer viewer = new JRViewer(print);
c = getContentPane();
c.setLayout(new java.awt.BorderLayout());
c.add(viewer);
show();
} catch (Exception x) {
x.printStackTrace();
}
}
}
答案 0 :(得分:0)
我会加载一个JasperReport对象,并使用你的rptPath传递填充管理器而不仅仅是这样的路径(假设它是你的jasper报告的完整文件路径):
JasperReport report = (JasperReport) JRLoader.loadObject(rptPath);
JasperPrint print = JasperFillManager.fillReport(report, parameter, con);
然后将其传递给您要在其中显示报告的JFrame。
答案 1 :(得分:0)
试试这个,假设您的abc.jrxml位于文件夹xyz:
中InputStream stream = getClass().getClassLoader().getResourceAsStream("/xyz/abc.jrxml");
JasperReport report = JasperCompileManager.compileReport(stream);
JaperPrint finalReport = JasperFillManager.fillReport(report, parameter, con);