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>>
Para ejecutar el código, necesitas:
Enjoy!
JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de datos, sin embargo a difere[...]
Hace un par de años atras google para el aniversario del juego de Pacman saco un doodle en su homenaje, ese doodle que s[...]
Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d[...]
Continuación del tutorial [Personalizar JTabbedPane con Netbeans]. La clase BlackTabbedPaneUI que extendemos de BasicTab[...]
JSON es un formato de texto ligero para el intercambio de datos ampliamente usado en los Servicios Web. En este post uti[...]
En este tutorial conoceremos lo que es el uso de BitmapFont en LibGDX y algún uso que le podemos dar como crear un menú,[...]