Загрузить JasperReport jrxml в JFrame

#java #oracle #swing #jasper-reports

#java #Oracle #качать #jasper-отчеты

Вопрос:

Как я могу просмотреть мой файл jrxml внутри JFrame ?

У меня есть следующий Java-код:

 package test;

import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JFrame;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.swing.JRViewer;


public class Test extends JFrame {

    private Connection conn = null; // database connection

    public Test() {

        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:XE",
                    "test", "test");
            JasperReport report = JasperCompileManager.compileReport("report1.jrxml");
            JasperPrint print = JasperFillManager.fillReport(report, null, conn);
            JRViewer viewer = new JRViewer(print);
            viewer.setOpaque(true);
            viewer.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (Exception e) {
            }
        }

        setSize(500, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new Test();
    }
}
  

Однако, когда я попытался запустить его, я получил следующее сообщение об ошибке:

 log4j:WARN No appenders could be found for logger(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).

log4j:WARN Please initialize the log4j system properly.
  

Мой JFrame появляется, но без отчета, который я хочу внедрить.

Как вы думаете, в чем моя ошибка?

Ответ №1:

JRViewer является JPanel , поэтому вместо..

 viewer.setVisible(true);
  

Положил ..

 // Add the viewer to the frame
add(viewer);
  

В качестве отступления:

 } catch (Exception e) {
}
  

Измените это на..

 } catch (Exception e) {
    e.printStackTrace();
}
  

Комментарии:

1. Спасибо за ваш ответ! Теперь я могу просматривать свой JRView внутри моего JFrame, но я все еще получал предупреждающие сообщения. Не могли бы вы сказать мне причину?