2

我使用 jasper 报告创建了一个小报告,并使用 jasper 查看器进行了预览,如下所示,

con = JDBCConnectionPool.getInstance().checkOut();
            String fileName = getClass().getClassLoader().getResource("com/bio/ofm/mnu/views/reports/jasperReports/repAuditReport.jrxml").getFile();
            JasperReport report = JasperCompileManager.compileReport(fileName);
            JasperPrint print = JasperFillManager.fillReport(report, null, con);
            JasperViewer viewer = new JasperViewer(print);   
            viewer.setVisible(true);

但我需要在 JPanel 中显示此报告,所以我尝试了,

JasperViewer.setDefaultLookAndFeelDecorated(true);
            JRViewer jrv = new JRViewer(print);
            jrv.setPreferredSize(new Dimension(getSize()));
            JScrollPane reportScroll = new JScrollPane(jrv);
           panel1.add(reportScroll);

但报告没有按我的预期显示,请解释将碧玉预览添加到 JPanel 的正确方法是什么。

4

2 回答 2

3

JasperViewer 扩展了 JFrame,您不想将 JFrame 添加到 JPanel。您也许可以将 JasperViewer 的 contentPane 添加到 JPanel。我在评论中讨论的其他问题仍未解决:

panel1 使用什么布局管理器?您是否在显示 GUI 后将 JScrollPane 添加到 JPanel?如果是这样,添加后是否在 JPanel 上调用 revalidate() 和 repaint()?

于 2012-05-18T02:17:23.423 回答
2

这是我的代码,它可以工作

       JRViewer jr=new JRViewer(print); 
       jPanel1.setLayout(new BorderLayout());
       jPanel1.repaint();
       jPanel1.add(jr);
       jPanel1.revalidate();
于 2017-05-21T12:22:17.663 回答