当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);
}
答案 0 :(得分:11)
改变这个:
JasperViewer.viewReport(jasperPrint);
到JasperViewer.viewReport(jasperPrint, false);
这将正常工作。
答案 1 :(得分:2)
除了致电替代方案外,无需做任何事情:
JasperViewer(jasperPrint, **false**);
JasperViewer.viewReport(jasperPrint, **isExitOnClose**);
JasperViewer有另一个构造函数/方法调用,它接收布尔参数:exitOnClose
我不知道你是否找到了自己的方法,但我认为这是最好的。
答案 2 :(得分:2)
JasperViewer(jasperPrint, false);
您必须使用jasperviewer
传递false,以便父窗口不会关闭。
答案 3 :(得分: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
代替,只有该帧结束&被处置掉了。