2013-05-16 56 views
5

當出現JasperViewer並關閉它時,主框架/父項也關閉。如何防止這一點?當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); 
     } 

回答

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來代替,只有該幀結束了&的處置。

+0

仍然有錯誤。 「非靜態方法setDefaultCloseOperation(int)不能從靜態上下文中引用。請幫助meeeeeeeeeeeeeeeeeeeeeeeee! –

2

無需做任何事情,除了調用替代:

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

的JasperViewer已接收布爾PARAM替代構造函數/方法調用:exitOnClose

我不知道,如果你」我找到了你自己的方式,但我認爲這是最好的。

1
JasperViewer(jasperPrint, false);  

你只需要通過假jasperviewer所以父窗口不會關閉。

8

更改此: JasperViewer.viewReport(jasperPrint);

JasperViewer.viewReport(jasperPrint, false); 這將正常工作。

相關問題