当JasperViewer出现并关闭它时,主框架/父框架也关闭

the*_*rra 6 java swing jasper-reports jframe

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);
        }
Run Code Online (Sandbox Code Playgroud)

Tha*_*ndu 11

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

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


And*_*son 1

改变:

JasperViewer.viewReport(jasperPrint);
Run Code Online (Sandbox Code Playgroud)

到:

JasperViewer.viewReport(jasperPrint);
JasperViewer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

看起来JasperVieweris usingJFrame.EXIT_ON_CLOSE会导致System.exit(n)被调用,从而结束 JVM。

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