IReport
IReport
IReport
1. CONTENIDO
1.1. Instalación de iReport en NetBeans
Una de las mejores soluciones en Netbeans a la hora de crear informes es
usar JasperReports pero antes de poder crearlos debemos tenerlo todo
preparado y listo para usarlo, en esta ocasión explicaré la que a mi juicio es
la mejor forma de tenerlo todo atado. Necesitaremos instalar el plugin
iReport para Netbeans, que nos ayudará en el diseño del informe que
tengamos que elaborar, además prepararemos las librerías esenciales para
poder usar las clases necesarias en nuestros proyectos.
A continuación los pasos detallados.
Primer paso. Instalación del plugin iReport.
Bajaremos la última versión que encontremos del plugin iReport de la web
oficial de Netbeans.
${distro.zipfilename.extensions}.nbm
iReport-5.5.0.nbm
jasperreports-components-plugin-5.5.0.nbm
jasperserver-plugin-5.5.0.nbm
Después haz doble clic sobre el botón para que cree el evento actionPerformed,
que es el evento que le indicará al nuestra aplicación que es lo que se hará si se
oprime el botón.Ahora ingresaremos el siguiente código y te lo explico abajo.
Primero si te das cuenta tenemos las librerías que vamos a ocupar y que antes ya
importamos, si no lo has hecho checa este post, haz clic aqui.
JFrame y JDialog
Los dos tipos de ventanas principales que tenemos en java son JFrame y
JDialog. Hay varias diferencias entre ellas y en función de estas diferencias
vamos a ver para qué sirven
Si instanciamos un JFrame, en la barra de abajo de windows (creo que se
llama "barra de herramientas") nos aparece un nuevo "botoncito"
correspondiente a nuestra aplicación. Si instanciamos un JDialog, no
aparece nada.
Un JFrame tiene un método setIconImage() para cambiar el icono por
defecto de la taza de café. JDialog no tiene este método.
Un JDialog admite otra ventana (JFrame o JDialog) como padre en el
constructor. JFrame no admite padres.
Un JDialog puede ser modal, un JFrame no.
Los JDialog son ideales para ventanas secundarias porque admiten una
ventana padre. Si la VentanaA es padre del JDialogB, entonces el JDialogB
siempre estará por delante de VentanaA, nunca quedará por detrás. Lo
ideal es que hagamos nuestras ventanas secundarias como JDialog cuyo
padre sea el JFrame principal. De esta forma los JDialog siempre serán
visibles por encima del JFrame y no se irán detrás ni quedarán ocultos por
el JFrame.
Los JDialog pueden ser hijos de JFrames o de otros JDialog mientras que
los JFrame no (Como así Hijos?), es decir, si tenemos claros conceptos de
programación Orientada a Objetos podemos relacionar esto de Hijos con el
concepto de Herencia (Aunque no directamente, es mas a nivel
conceptual), con estos componentes podemos hacer que una Ventana sea
Padre de otra Ventana de tipo JDialog, asignándole algún tipo de
comportamiento o dejando la ventana padre como Principal.
Recuerdo que hace muchos post anteriores hablé sobre JasperReports, una
herramienta Open Source para emitir reportes en Java. Pueden usarlo
externamente descargándolo desde jasperforge, o instalar el complemento
en netbeans como se explicó en el post mencionado (Instalación de
JasperReports).
1.6.1. Ejemplos
JDialog
public class VentanaConfirmacion extends JDialog
{
private Container contenedor;
public VentanaConfirmacion(){
contenedor=getContentPane();
contenedor.setLayout(null);
//Asigna un titulo a la barra de titulo
setTitle("CoDejaVu : Titulo Del JDialog");
//tamaño de la ventana
setSize(300,200);
//pone la ventana en el Centro de la pantalla
setLocationRelativeTo(null);
}
JFrame
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
JDialog
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
// CONSTRUCTOR DE LA CLASE
// crea la ventana, con los bordes, botones,
// y todos los componentes internos para hacer lo que
// se pretenda con éste diálogo.
public EjemploJDialog() {
// evita cambio de tamaño
setResizable(false);
// título del diáolog
setTitle("u00C9sto es una ventana de diu00E1logo");
// dimensiones que ocupa en la pantalla
setBounds(100, 100, 450, 229);
// capa que contendrá todo
getContentPane().setLayout(new BorderLayout());
// borde de la ventan
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
// pone el panel centrado
getContentPane().add(contentPanel, BorderLayout.CENTER);
// sin capas para poder posicionar los elementos por coordenadas
contentPanel.setLayout(null);
{
// aquí se pone el JTextArea dentro de un JScrollPane
// para que tenga barras de desplazamiento
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 11, 424, 146);
contentPanel.add(scrollPane);
{
JTextArea txtrstoEsUn = new JTextArea();
txtrstoEsUn.setText("u00C9sto es un JTextArea, aquu00ED podemos
poner un texto de varias lu00EDneas.rn1rn2rn3rn..rnrnObserva que no se ve en la
barra de tareas que exista u00E9sta ventana. Si fuera un JFrame su00ED que se
veru00EDa en la barra de tareas con el texto del tu00EDtulo de la
ventana...rnrnEl componente JTextArea estu00E1 dentro de un JScrollPane para que
se visualizen las barras de scroll cuando sea necesario.rnrnLa ventana tiene el
atributo 'resizable' a 'false' para evitar que se pueda cambiar el
tamau00F1o.rnrnrnrnrnrnFin del texto.");
txtrstoEsUn.setLineWrap(true);
txtrstoEsUn.setAutoscrolls(true);
scrollPane.setViewportView(txtrstoEsUn);
}
}
{
// a continuación tenemos los botones clásicos 'Vale' y 'Cancela'
// éste código lo ha generado Eclipse...
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("Vale");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// aquí van las acciones al hacer click en Vale
// envía el diálogo al recolector de basura de Java
dispose();
}
});
okButton.setActionCommand("Vale");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Cancelar");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// aquí van las acciones al hacer click en Vale
// envía el diálogo al recolector de basura de Java
dispose();
}
});
cancelButton.setActionCommand("Cancelar");
buttonPane.add(cancelButton);
}
}
}
}
public Asistentes(){
}
2. RESUMEN
Jasper Report es una librería para la generación de informes. Está escrita
en java y es libre. http://jasperforge.org/ El funcionamiento consiste en
escribir un xml donde se recogen las particularidades del informe. Este xml
lo tratan las clases del Jasper para obtener una salida que pueden ser un
PDF, XML, HTML, CSV, XLS, RTF, TXT.
Para generar el xml, o el compilado .jasper les recomiendo descargar la
herramienta iReport que es un Entorno Gráfico que está implementado en
java y se integra perfectamente con el Jasper
Report http://jasperforge.org/sf/projects/ireport.
Aunque JasperReports se utiliza principalmente para capacidades de
reporte a las aplicaciones basadas en la Web a través de la API de Servlet,
no tiene absolutamente ninguna dependencia de la API Servlet o cualquier
otra biblioteca de Java EE. No hay nada que nos impida la creación de
aplicaciones de escritorio Java para generar informes con JasperReports.
·El título del informe, que aparecerá una vez en la parte superior del informe.
·Un encabezado de página, que aparecerá en la parte superior de cada página.
·Una sección de detalle, que normalmente contiene los datos de los informe
primarios.
·A pie de página, que aparecerá en la parte inferior de cada página.
·Una sección de resumen, que aparecerá al final del informe.
En cuanto al Data Sourse Una de las configuraciones más habituales con las
que nos encontraremos en una aplicación web es el acceso a una o varias
bases de datos. La forma habitual de configurar un acceso a base de datos
es creando en el servidor un Pool de conexiones que serán reutilizadas y
gestionadas por el servidor, y publicarlo como un recurso JNDI. Una vez
publicado como recursos JNDI cualquier aplicación desplegada en ese
servidor tendrá acceso al pool de conexiones.
Esta clase tendrá tan solo tres atributos: un id (que en este caso podría no
ser necesario, pero es para no perder la costumbre, cuando veamos algo de
Hibernate veremos que es mejor acostumbrarnos desde el prinicpio a poner
este id), un nombre para distinguir al usuario, y el nombre de la consola
que tiene (que es el dato que nos interesa para crear la gráfica).Los JDialog
admiten un padre y pueden ser o no modales. ¿Para qué sirve ese padre?
¿Puedo hacer cualquier JDialog modal?
Otras veces queremos hacer una ventana de error, de aviso, para pedir un
dato o confirmar algo. ¿Pongo JFrame o JDialog para esas ventanas?
¿Tengo que construirla?
Vamos a tratar en este tutorial de echar un vistazo a JFrame y JDialog, así
como a JOptionPane y ver cuándo usamos una u otra. Trataremos de
responder a todas estas preguntas.
Los reportes son otras de las utilidades más importantes en las aplicaciones
ya que su función es dar al usuario información ordenada y limpia así como
un formato adecuado para poder ser llevado a impresión o almacenarlo en
algún tipo de fichero como .doc, .odt, pdf, etc.
Recuerdo que hace muchos post anteriores hablé sobre JasperReports, una
herramienta Open Source para emitir reportes en Java. Pueden usarlo
externamente descargándolo desde jasperforge, o instalar el complemento
en netbeans como se explicó en el post mencionado (Instalación de
JasperReports).
3. SUMMARY
Jasper Report is a library for the generation of reports. It is written in java
and is free. http://jasperforge.org/ The operation consists in writing an xml
where the particularities of the report are collected. This xml is treated by
the Jasper classes to obtain an output that can be PDF, XML, HTML, CSV,
XLS, RTF, TXT.
To generate the xml, or the .jasper compiled, I recommend downloading
the iReport tool, which is a Graphical Environment that is implemented in
java and integrates perfectly with the Jasper Report
http://jasperforge.org/sf/projects/ireport.
Although JasperReports is primarily used for reporting capabilities to Web-
based applications through the Servlet API, it has absolutely no
dependency on the Servlet API or any other Java EE library. There is
nothing stopping us from creating Java desktop applications to generate
reports with JasperReports.
JasperReports allows us to separate the data into sections. These sections
include:
· The title of the report, which will appear once at the top of the report.
· A page header, which will appear at the top of each page.
· A detail section, which normally contains the data of the primary reports.
· Footnote, which will appear at the bottom of each page.
· A summary section, which will appear at the end of the report.
Regarding Data Sourse One of the most common configurations that we will
find in a web application is access to one or several databases. The usual
way to configure a database access is to create in the server a pool of
connections that will be reused and managed by the server, and publish it
as a JNDI resource. Once published as JNDI resources, any application
deployed on that server will have access to the connection pool.
For this the main object that we will use to configure the pool of
connections and publish it as a JNDI resource will be the
javax.sql.DataSource. The configuration of a pool of connections and
publication as a JNDI resource in a Tomcat, WebSphere, Jboss etc is
different. The most usual way is to do it with the administration interface of
each of the containers (servers) and once we have the JNDI name of the
resource, the configuration of the application is the same for all the servers,
since the application makes use of the DataSource using the JNDI name
referenced in the deployment description file or web.xml (Deployment
Description). In this article we will focus on the configuration of Oracle,
which is not very different from any other database such as MySql, MariaDB
etc. For the Creation of reports using Wizard, First we will start creating a
new Java standalone project in NetBeans (File -> New Project ... -> Java -
> Java Application), assign a name (which in my case will be
GraficaReport) and press the "Finish" button so that the new project is
generated and we see in the editor our Main class. We added to the
"Libraries" node of our project the library "JasperReports" that we created
in the first part of the tutorial and the jar "commons-logging-1.1.1.jar", as
we have been doing so far. In addition we must add two jars more that will
allow us to generate the graphs. Since JasperReports makes use of
JFreeChart to generate the graphs we must add two of its jars:
jfreechart.jar and jcommon.jar. If they downloaded JasperReports in
the .zip file that contains the support libraries then they already have these
jars (which are in the lib directory of the .zipanterior), they should only add
them to the "Libraries" node of the project. Now we need, as in the cases
above, a class whose instances will maintain the data that we will show in
the report. In this case, as we are talking about consoles, I think that it is
most appropriate that this is a "Player" class. So let's add this class to our
project.
This class will have only three attributes: an id (which in this case might
not be necessary, but it is to not lose the habit, when we see something of
Hibernate we will see that it is better to get used from the beginning to put
this id), a name for distinguish the user, and the name of the console that
has (which is the data that interests us to create the graph). JDialog admit
a parent and may or may not be manners. What is that father for? Can I do
any modal JDialog?
We will try in this tutorial to take a look at JFrame and JDialog, as well as
JOptionPane and see when we use one or the other. We will try to answer
all these questions.
The reports are other of the most important utilities in the applications
since their function is to give the user neat and clean information as well as
an adequate format to be able to be printed or stored in some type of file
such as .doc, .odt, pdf , etc.
I remember many previous posts I talked about JasperReports, an Open
Source tool to issue reports in Java. You can use it externally by
downloading it from jasperforge, or install the add-on in netbeans as
explained in the mentioned post (Installation of JasperReports).
4. RECOMENDACIÓN
1. Se recomienda tener una gran capacidad de entendimiento, bastante
interés de investigar para el desarrollo de iReport en NetBeans.
2. Tener una investigación más vasta de este contenido porque el
reporte es un punto inexcusable al momento de desarrollar nuestro
software permitiéndonos conocer ciertos aspectos del cliente
Empresa.
3. Ser precavidos al momento de instalar el iReport en NetBeans porque
una proterva instalación traerá ramificaciones como no poder abrir su
netBeans entre otros, les recomendamos seguir cada paso planteado
en este block al momento de instalar su iReport.
4. Según el software que el desarrollador programe será la profundidad
de su reporte, si un programador desarrolla programas
extremadamente avanzados recomendamos utilizar los framework
que existen, ya que estos nos facilitan el trabajo y tendremos una
mejor reputación de nuestros clientes por ende estaremos
cumpliendo con los requerimientos planteados de ella, de lo contrario
también puede utilizar framework pero eso es opcional.
5. CONCLUSIONES
Tras un escudriñamiento extenso concluimos los siguiente:
Como resultado de la investigación concluimos que la herramienta iReport
es una herramienta visual que sirve para generar ficheros XML utilizando la
herramienta de generación de informes JasperReport. El jasperReport es
software libre que nos permite crear informes, donde los ficheros se definen
en un xml para posteriormente ser compilado por las librerías
JasperReports (.jasper), es competencia de Crystal reports en los usuarios
windows.
Del mismo modo existe muchas herramientas, librerías, framework que nos
permiten crear reportes en netbeens pero es necesario conocer las
características de cada una de ellas.
7. GLOSARIO DE TÉRMINOS
REPORTES: Ni menos en los reportes. JasperReports es un framework
bastante completo para desarrollar reportes tanto web como desktop
en Java. Aunque el formato fuente de un reporte en JasperReports es un
archivo XML, existe una herramienta que permite crear un reporte de
manera visual. Su nombre: iReport.
JDIALOG : En una aplicación java con ventanas debería haber un único
JFrame, correspondiente a la ventana principal de la aplicación. El resto de
ventanas secundarias deberían ser JDialog.
CLASS : es una construcción que le permite crear sus propios tipos
personalizados agrupando las variables de otros tipos, métodos y eventos.
Una clase es como un plano. Define los datos y el comportamiento de un
tipo.
8. LINKOGRAFÍA
https://jossjack.wordpress.com/2014/06/15/
jasperreport-ireport-en-netbeans/
https://es.scribd.com/document/205441147/
Fechas-y-campos-calculados-iReport-pdf
http://www.javerosanonimos.com/2011/08/
campos-variables-y-parametros.html
http://www.javatutoriales.com/2009/03/creacion-de-reportes-con-
jasperrepots-y_30.html
http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b
%C3%A1sico_con_Jasper_Report
http://fernando-bustos.blogspot.pe/2013/05/jasperviewer-sobre-
jdialog.html
https://www.programcreek.com/java-api-examples/index.php?
api=net.sf.jasperreports.view.JasperViewer
http://jasperreports.sourceforge.net/api/net/sf/jasperreports/view/
JasperViewer.html
https://www.lawebdelprogramador.com/foros/Java/479892-
JasperViewer.html
http://luigytelu.blogspot.pe/2013/03/ireport-jasperviewer.html
https://www.ecured.cu/IReport
https://www.codejobs.biz/es/blog/2014/01/13/que-es-jasperreports