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

GSON: Convertir array JSON en List de objetos Java

GSON: Convertir array JSON en List de objetos Java

En este ejemplo tenemos un array en JSON el cual representa una lista de alumnos y queremos llevar este a una lista en j...

Insert, Update, Delete con Access y C#

Insert, Update, Delete con Access y C#

En un post anterior vimos la forma de conectarnos a una base de datos Access con C#, pero de nada nos sirve solo conecta...

Añadir Splash Screen en Java/Netbeans

Añadir Splash Screen en Java/Netbeans

¿Splash Screen? El splash screen o traducido al aspañol 😉  es una «Pantalla de bienvenida» que se muestra cuando se ejec...

Métodos GET y POST en RestFul y JSON

Métodos GET y POST en RestFul y JSON

En este post veremos como enviar solicitudes GET y POST a un API RestFul  desde un dispositivo con android. Nuestra apli...

Matriz de Adyacencia: Representación de grafos en Java

Matriz de Adyacencia: Representación de grafos en Java

En este post conoceremos una forma de representar grafos mediante una Matriz de Adyacencia y un ejemplo básico de este e...

Código de Control v7 en JavaScript

Código de Control v7 en JavaScript

En esta oportunidad, se deja a disposición de la comunidad de programadores de Bolivia y también porque no, del que quie...

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)

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Las empresas GeoSystems e Inteligencia Geoespacial (Igeo) en coordinación con el Gobierno Nacional de Bolivia,  desarrol...

¿Sabia que por la pandemia que azota a la mayoría de los países de la Tierra, la mitad de la población estudiantil del m...

El gigante de la tecnología Microsoft ha lanzado un mapa interactivo para proporcionar información sobre la propagación...

El gigante de la informática Google, ante la reciente pandemia mundial declarada por la OMS (Organización Mundial de la...

Herramientas

Generador de Enlaces a Whatsapp