2013-05-16 9 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); 

System.exit(n)が呼び出されることになりますどのJasperViewerJFrame.EXIT_ON_CLOSEを使用していると思われます、これにより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でfalseを渡すだけです。この

8

変更:JasperViewer.viewReport(jasperPrint, false);JasperViewer.viewReport(jasperPrint);

は、これが正常に動作します。

関連する問題