2016-06-18 8 views
0

Ich habe eine Swing-Anwendung erstellt. Ich habe einen Bericht mit iReport 5.6.0 erstellt. Jetzt, wenn ich den Bericht aufruft und versuche, den Bericht in JInternalFrame hinzuzufügen, löst er Ausnahme aus. Ich teile meinen Code weiter unten.JasperReports: JRViewer verursacht Ausnahme in Container in JInternalFrame hinzugefügt werden

Report Viewer

public class MyReportViewer extends JInternalFrame { 
    public MyReportViewer(String fileName){ 
     this(fileName, null); 
    } 

    public MyReportViewer(String fileName, HashMap parameter) { 
     super("View Report",true,true,true,true); 
     try { 
      DB_Con db = new DB_Con(); 

      JasperPrint print = JasperFillManager.fillReport(fileName,parameter,db.con); 
      java.util.List list = print.getPages(); 

      if(!(list.isEmpty())) { 
       JRViewer viewer = new JRViewer(print); 

       Container contentPane = super.getContentPane(); 
       contentPane.removeAll(); 
       contentPane.add(viewer); 

       int sW =(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(); 
       int sH = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-50; 

       setBounds(0,0,sW,sH); 
       setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
      } else { 
       BOptionPane.showMessageDialog(null, 
         BOptionPane.REPORT_MESSAGE, 
         BOptionPane.ERROR_TITLE, 
         BOptionPane.ERROR_ICON); 
      } 
     }catch(JRException jre){ 
      jre.printStackTrace(); 
     } 
    } 
} 

Hauptrahmen

public class frmMenu extends JFrame { 
    public frmMenu(){ 
     initComponents(); 
    } 

JDesktopPane dPane = new JDesktopPane(); 

//---- itemAllSizeInfo ---- 
        itemAllSizeInfo.setText("All Size List"); 
        itemAllSizeInfo.setFont(new Font("Rupali", Font.BOLD, 14)); 
        itemAllSizeInfo.addActionListener(new ActionListener(){ 
         public void actionPerformed(ActionEvent e) { 
          MyReportViewer sizeInfo = new MyReportViewer(".\\Report\\All_Size_List.jasper"); 
          dPane.add(sizeInfo); 
          sizeInfo.setVisible(true); 
         } 
        }); 

Die Ausnahme:

Exception in thread "AWT-Eventqueue-0" java.lang . Stackoverflow bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports .view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.getRenderersCache (JRViewer.java:2256) bei net.sf.jasperreports.view.JRViewer $ 23.ge tRenderersCache (JRViewer.java:2256)

Kann jemand helfen, herauszufinden, um das Problem zu überwinden. Ich benutze iReport 5.6.0 und JDK 1.7.0 Version

+0

Es gibt nicht genug Informationen, um zu reproduzieren, StackOverflow bedeutet, dass Sie endlos innerhalb eines Metodos Schleifen, Beispiel das actionPerformed wird durch das Zeug ausgelöst, das Sie darin tun. –

+0

Dieser Bericht funktionierte gut, bevor ich diesen Bericht mit iReport 5.6.0 kompiliert habe. Der Bericht wurde mit iReport 1.XX Version entwickelt. Kannst du mir sagen, was ich tun soll? –

+0

Es ist wahrscheinlich nicht der Bericht, aber Ihr Java-Code .. versuchen Sie, ein paar Break-Punkte und/oder loggen Sie Ihre Methoden ein. Ich kann nicht testen, da ich nicht den ganzen Code habe. –

Antwort

1

Das war ein bug auf dem Jasper. Benutze einfach die letzte Version.

+0

Ich habe Version 5.6.0 verwendet. Welche Version sollte ich verwenden? Kannst du mich vorschlagen? –

+0

Der Stacktrace zeigt an, dass Sie JasperReports 6.2.2 verwenden. Das Upgrade auf 6.3.0 (Sie finden es unter http://repo1.maven.org/maven2/net/sf/jasperreports/jasperreports/6.3.0/) sollte das Problem beheben. – dada67

Verwandte Themen