2013-05-16 46 views
5

Khi xuất hiện JasperViewer và tôi đóng nó, khung chính/phụ huynh cũng đã đóng. Làm thế nào để ngăn chặn điều này?Khi JasperViewer xuất hiện và tôi đóng nó, khung/cha mẹ chính cũng đóng

Đây là mã của tôi ..

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

Trả lời

1

Thay đổi:

JasperViewer.viewReport(jasperPrint); 

Để:

JasperViewer.viewReport(jasperPrint); 
JasperViewer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

Có vẻ như các JasperViewer đang sử dụng JFrame.EXIT_ON_CLOSE mà sẽ gây System.exit(n) được gọi là , do đó kết thúc JVM.

Bằng cách sử dụng JFrame.DISPOSE_ON_CLOSE thay vào đó, chỉ khung đó được kết thúc & được xử lý.

+0

Vẫn gặp lỗi. "phương thức non-static setDefaultCloseOperation (int) không thể được tham chiếu từ một ngữ cảnh tĩnh. Trợ giúp meeeeeeeeeeeeeeeeeeeeeeeee! –

2

Không cần phải làm gì cả, khác hơn là để gọi thay thế:

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

Các JasperViewer đã thay thế nhà xây dựng/gọi phương thức mà nhận boolean param: exitOnClose

Tôi không biết nếu bạn' đã tìm thấy cách riêng của bạn xung quanh nhưng tôi nghĩ rằng đây là một trong những tốt nhất.

1
JasperViewer(jasperPrint, false);  

Bạn chỉ cần chuyển sai với jasperviewer để cửa sổ chính sẽ không đóng.

8

Thay đổi này: JasperViewer.viewReport(jasperPrint);

để JasperViewer.viewReport(jasperPrint, false); này sẽ làm việc đúng cách.

Các vấn đề liên quan