当JasperViewer出现和我关闭它,主框架/父母也闭合[重复](When a JasperVi

2019-09-03 14:16发布

这个问题已经在这里有一个答案:

  • 如何防止父框架关闭时关闭子框架(Java + iReport的)? 1个回答

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);
        }

Answer 1:

更改此: JasperViewer.viewReport(jasperPrint);

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



Answer 2:

无需做任何事情,除了调用选择:

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

该JasperViewer具有接收布尔PARAM替代构造/方法调用: exitOnClose

我不知道你是否已经找到了解决自己的路,但我认为这是最好的一个。



Answer 3:

JasperViewer(jasperPrint, false);    

你只需要通过假jasperviewer所以父窗口不会关闭。



Answer 4:

更改:

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代替,仅该帧结束&处置。



文章来源: When a JasperViewer appear and I close it, the main frame/parent also closed [duplicate]