2013-05-16 3 views
5

Gdy pojawia się JasperViewer, główna rama/element nadrzędny również są zamknięte. Jak temu zapobiec?Kiedy pojawia się JasperViewer i zamykam go, główna ramka/element nadrzędny również są zamknięte

To jest mój kod ..

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

Odpowiedz

1

Zmiana:

JasperViewer.viewReport(jasperPrint); 

Do:

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

Wydaje JasperViewer korzysta JFrame.EXIT_ON_CLOSE co spowoduje System.exit(n) nazywać , kończąc tym samym maszynę JVM.

Zamiast tego używa się JFrame.DISPOSE_ON_CLOSE, tylko ta klatka jest zakończona & unieszkodliwiona.

+0

Nadal występują błędy. "niestatyczna metoda setDefaultCloseOperation (int) nie może być odwoływana ze statycznego kontekstu. Pomoc meeeeeeeeeeeeeeeeeeeeeeeee! –

2

Nie trzeba robić nic innego niż zadzwonić do alternatywy:

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

JasperViewer jest alternatywą konstruktor/call metoda, która odbiera logiczną param: exitOnClose

nie wiem, jeśli” ve znalazłem na swój sposób, ale uważam, że jest najlepszy.

1
JasperViewer(jasperPrint, false);  

Po prostu trzeba przekazać fałszywe z jasperviewer więc okno rodzic nie zostanie zamknięte.

8

Zmień to: JasperViewer.viewReport(jasperPrint);

do JasperViewer.viewReport(jasperPrint, false); To będzie działać prawidłowo.

Powiązane problemy