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()); }
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()); }
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>> (actualizado 06/01/2026)
Para ejecutar el código, necesitas:
Enjoy!
En este tutorial veremos una forma para registrar archivos JPG en una base de datos PostgreSQL y recuperarlos para utili[...]
Tink es una biblioteca de cifrado desarrollada por un grupo de criptógrafos e ingenieros de seguridad de Google lanzado[...]
Espresso es un framework de testing propiedad de Google que está dirigido a desarrolladores que creen que las pruebas au[...]
El confinamiento causado por el covid-19, son una gran oportunidad para realizar varias actividades en casa y desde casa[...]
En este tutorial veremos una forma de trabajar con el swing JToggleButton y una base de datos para dar respuesta a una[...]
En este post implementaremos el código necesario para multiplicar matrices con el lenguaje Kotlin, pero para realizar es[...]