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!
Maria DB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar[...]
En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario. Sin mas[...]
De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len[...]
Si nuestra aplicación tiene que llevar a cabo un cierto trabajo que no sabemos cuanto durará y que a la vez consume much[...]
En este tutorial conoceremos una forma de conectar una aplicación en Laravel con tres bases de datos diferentes, 2 en My[...]
En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S[...]