6

当一个JasperViewer出现并且我关闭它时,主框架/父级也关闭了。如何防止这种情况?

这是我的代码..

 private void cmdprintidMouseClicked(java.awt.event.MouseEvent evt) {                                        
        // TODO add your handling code here:
        try {
            JasperDesign jasperDesign = JRXmlLoader.load("report12.jrxml");
            String sql = "select * from db1 where Company LIKE '" + txtcompany.getText() + "%'";
            JRDesignQuery newQuery = new JRDesignQuery();
            newQuery.setText(sql);
            jasperDesign.setQuery(newQuery);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
            JasperViewer.viewReport(jasperPrint);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
4

4 回答 4

14

改变这个: JasperViewer.viewReport(jasperPrint);

JasperViewer.viewReport(jasperPrint, false); 这将正常工作。

于 2014-09-27T19:16:03.827 回答
2
JasperViewer(jasperPrint, false);    

你只需要传递 false ,jasperviewer这样父窗口就不会关闭。

于 2014-03-20T16:35:46.357 回答
2

除了调用替代方法之外,无需做任何事情:

JasperViewer(jasperPrint, **false**);
JasperViewer.viewReport(jasperPrint, **isExitOnClose**);

JasperViewer 具有接收布尔参数的替代构造函数/方法调用:exitOnClose

我不知道你是否找到了自己的方法,但我认为这是最好的方法。

于 2013-10-09T00:10:05.757 回答
1

改变:

JasperViewer.viewReport(jasperPrint);

至:

JasperViewer.viewReport(jasperPrint);
JasperViewer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

似乎JasperViewer正在使用JFrame.EXIT_ON_CLOSE将导致System.exit(n)被调用,从而结束 JVM。

通过JFrame.DISPOSE_ON_CLOSE改用,只有该帧被结束和处理。

于 2013-05-16T06:59:08.933 回答