Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / iReport / Incrustar reporte en formulario java

Incrustar reporte en formulario java

Autor jc mouse domingo, diciembre 13, 2015

Jasperreport nos brinda su propio visor de reportes, sin embargo en ocasiones queremos mostrar los informes directamente en algún formulario de la aplicación, es decir incrustar el reporte ya sea en un jframe o jpanel. Lograr esto es bastante sencillo, si nos fijamos en el API de JasperReport podremos observar que el visor JRViewer desciende de JPanel por lo que basta con usar el método ADD para agregar el reporte en un jpanel.

Class JRViewer

java.lang.Object
   java.awt.Component
      java.awt.Container
         javax.swing.JComponent
            javax.swing.JPanel
               net.sf.jasperreports.view.JRViewer

Pero observemos esto con dos ejemplo.

Para un reporte sin parámetros hacemos lo siguiente:

try {
   //archivo jasper
   URL jasperUrl = this.getClass().getResource("/com/bolivia/report/rp_people1.jasper");
   JasperReport report = (JasperReport) JRLoader.loadObject(jasperUrl);
   JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, new JMySQL().getConnection() );
   //se crea el visor con el reporte
   JRViewer jRViewer = new JRViewer(jasperPrint);  
   //se elimina elementos del contenedor JPanel
   jpContainer.removeAll();
   //para el tamaño de l reporte se agrega un BorderLayout
   jpContainer.setLayout(new BorderLayout());        
   jpContainer.add(jRViewer, BorderLayout.CENTER);
   jRViewer.setVisible(true);
   jpContainer.repaint();
   jpContainer.revalidate();
} catch (JRException ex) {
   System.err.println(ex.getMessage());
}

reporte incrustado

Para un reporte con parámetros:

Similar al anterior pero usamos un MAP para los parámetros

try{
   //archivo jasper
   URL  jasperUrl = this.getClass().getResource("/com/bolivia/report/rp_people2.jasper");
   JasperReport report = (JasperReport) JRLoader.loadObject(jasperUrl);
   //para los parametro
   Map parametros = new HashMap(); 
   parametros.clear();     
   //Nuestro parametro se llama "pLastName"
   parametros.put( "pLastName", txtParameter.getText() );         
   //agregamos los parametros y la conexion a la base de datos
   JasperPrint jasperPrint = JasperFillManager.fillReport(report, parametros, new JMySQL().getConnection());   
   //se crea el visor con el reporte
   JRViewer jRViewer = new JRViewer(jasperPrint);      
   //se elimina elementos del contenedor JPanel
   jpContainer.removeAll();
   //para el tamaño del reporte se agrega un BorderLayout
   jpContainer.setLayout(new BorderLayout());        
   jpContainer.add(jRViewer, BorderLayout.CENTER);
   jRViewer.setVisible(true);   
   jpContainer.repaint();       
   jpContainer.revalidate();
} catch (JRException ex) {
   System.err.println(ex.getMessage());
}

reportes java

Podemos ver una clase JMySQL(), buenos esa clase nos da la conexión a la base de datos.

El código completo te lo dejo en este enlace pobre <<Soy un enlace>>

Para ejecutar el código, necesitas:

  • Librerías de Jasperreport 5.1.0
  • Driver de conexión “MySQL-connector-java” versión 5.1.23
  • Los reportes y el código SQL están en el RAR de descarga. La base de datos se llama “dbTest”
  • Servidor de base de datos MySQL

Enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

base de datos multiple – parte II

base de datos multiple – parte II

Continuación del tutorial “Utiliza 2 bases de datos diferentes en una aplicación” La Interfaz frmSelected.ja...

Envío de correo HTML con php

Envío de correo HTML con php

PHP cuenta con la función mail que nos permite el envío de correo desde nuestro servidor web bool mail ( string $to , st...

Mapas en HTML5 – Uniendo todo – Parte 6

Mapas en HTML5 – Uniendo todo – Parte 6

Última parte del tutorial “Mapas interactivos HTML5”, vamos uniendo todo todo el código. En la parte 5 de es...

Escalar imagen en java

Escalar imagen en java

Esta aplicacion permite escalar una imagen desde java sin perder las proporciones de la misma, utiliza SCALE_AREA_AVERAG...

Blog MVC – Carga de páginas estáticas [p4]

Blog MVC – Carga de páginas estáticas [p4]

Cuarta parte de esta pequeña serie de tutoriales sobre [Crea tu blog con el patrón MVC y php] En esta cuarta entrega ver...

Compartir conexión de base de datos

Compartir conexión de base de datos

Cuando utilizamos aplicaciones web con conexión a base de datos MYSQL, se suele crear una clase que gestione la interacc...

4 comentarios en “Incrustar reporte en formulario java”

  1. berceliuz dice:

    como podría visualizar un pdf ya creado .
    es posible hacerlo con esas librerías ?
    gracias por la respuesta.

    1. Mouse dice:

      bueno tendrías que buscar unas librerias para eso, tal vez Apache PDFBox

      1. berceliuz dice:

        investigando un poco la documentación de Apache PDFBox parece que no tiene un visor de pdf.
        y eso es lo que necesito . si pudieras recomendarme otras librerías o alguna forma de como hacerlo.
        gracias

      2. Pergen dice:

        hola, soy nuevo en la programacion con eclipse.
        quiero hacer un reporte con graficos pero me sale el error de exception:
        porfa si alguien me ayuda tengo Ireport 5.6 . gracias desde Malabo Guinea Ecuatorial

        Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap
        at net.sf.jasperreports.engine.component.ComponentsEnvironment.(ComponentsEnvironment.java:56)
        at net.sf.jasperreports.engine.component.ComponentsEnvironment.getInstance(ComponentsEnvironment.java:76)
        at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.getSchemaLocations(JRReportSaxParserFactory.java:93)
        at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:153)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

MAUS es una aplicación para dispositivos móviles con el Sistema Operativo Android que te permite realizar exámenes desde...

En este post crearemos una aplicación en Android Studio para conectarnos con nuestra base de datos de Firebase y leer al...

Firebase es la plataforma para el desarrollo de aplicaciones web y aplicaciones móviles de Google el cual se centra en e...

Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite...

Android Bolivia

Bandera en Alto