Herramientas de usuario

Herramientas del sitio


bloque4:informes

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

bloque4:informes [2020/12/18 00:58] – [Resources en IntelliJ] fernandobloque4:informes [2024/09/16 20:55] (actual) – editor externo 127.0.0.1
Línea 16: Línea 16:
  
 <code java> <code java>
- JLabel lblFoto = new JLabel(); +JLabel lblFoto = new JLabel(); 
-lblFoto.setIcon(new ImagenIcon("foto1.jpg"));+lblFoto.setIcon(new ImageIcon("foto1.jpg"));
  
 //Ó si tenemos la imagen referenciada mediante un objeto File //Ó si tenemos la imagen referenciada mediante un objeto File
Línea 53: Línea 53:
  
 //4- creamos el icono a partir de Image //4- creamos el icono a partir de Image
-imagenIcono = new ImageIcon(imagenRedimensionada);+imagenIcono = new ImageIcon(imagenEscalada);
  
 //Ahora lo mostramos en la etiqueta //Ahora lo mostramos en la etiqueta
-vista.labelFoto.setIcon(iconoRedimensionado);+vista.labelFoto.setIcon(imagenIcono);
  
  
Línea 196: Línea 196:
  
 ==== Dependencias ==== ==== Dependencias ====
-Si buscamos la librería en el [[https://mvnrepository.com/artifact/jfree/jfreechart|repositorio de Maven]] podemos ver sus dependencias. Las dependencias son las librerías que necesita una librería concreta para funionar. Es habitual que para utilizar una librería concreta se necesiten otras librerías de terceros.+Si buscamos la librería en el [[https://mvnrepository.com/artifact/org.jfree/jfreechart|repositorio de Maven]] podemos ver sus dependencias. Las dependencias son las librerías secundarias que necesita una librería concreta para funionar. Es habitual que para utilizar una librería concreta se necesiten otras librerías de terceros.
  
 Para utilizar JFreechart necesitamos incluir en el //classpath// de nuestro proyecto la librería y sus dependencias: Para utilizar JFreechart necesitamos incluir en el //classpath// de nuestro proyecto la librería y sus dependencias:
  
-Para las versiones 1.0.X, JFreeChart necesita las [[https://mvnrepository.com/artifact/jfree/jcommon|librerias JCommon]]. +Para las versiones 1.0.X, JFreeChart necesita las [[https://mvnrepository.com/artifact/org.jfree/jcommon|librerias JCommon]]. 
-  * ''jfreechart-1.X.X.jar'' +  * ''jfreechart-1.0.X.jar'' 
-  * ''jcommon-1.X.X.jar''+  * ''jcommon-1.0.X.jar''
  
 Actualmente se ha distribuido la versión 1.5.X de JFreeChart, la cual no conlleva dependencias para el trabajo que vamos a realizar con ella, aunque sigue siendo recomendable incluir //JCommon//, si vamos a añadir gráficos a nuestros informes //Jasper Report// Actualmente se ha distribuido la versión 1.5.X de JFreeChart, la cual no conlleva dependencias para el trabajo que vamos a realizar con ella, aunque sigue siendo recomendable incluir //JCommon//, si vamos a añadir gráficos a nuestros informes //Jasper Report//
  
 +
 +//Los siguientes ejemplos de código están planteados con las versiones: **jfreechart-1.0.19** y **jcommon-1.0.24**//
 ==== Funcionamiento ==== ==== Funcionamiento ====
  
Línea 388: Línea 390:
  
 ==== Desplegar diagrama ==== ==== Desplegar diagrama ====
-Hemos visto en los ejemplos que cualquier diagrama corresponde a una instancia de la clase ''JFreeChart''. Una vez que tenemos el objeto, tenemos diferentes formas de exportarlo o mostrarlo.+Hemos visto en los ejemplos que cualquier diagrama corresponde a una instancia de la clase ''JFreeChart''. Una vez que tenemos dicho objeto, tenemos diferentes formas de exportarlo o mostrarlo.
  
 {{ :bloque4:plotypanel.png?direct&250|}} {{ :bloque4:plotypanel.png?direct&250|}}
  
-Como detalle, un diagrama JFreeChart esta compuesto dos areas principales: el area del panel contenedor y el area de l diagrama (Plot):+Como detalle, un diagrama JFreeChart esta compuesto dos areas principales: el area del panel contenedor y el area del diagrama (Plot):
  
  
Línea 405: Línea 407:
 </code> </code>
  
-Como hemos visto en ejemplo anteriores, el area del Plotpuede tener orientación vertical u horizontal: ''PlotOrientation.HORIZONTAL / VERTICAL''.+Como hemos visto en ejemplos anteriores, el area del Plot puede tener orientación vertical u horizontal: ''PlotOrientation.HORIZONTAL / VERTICAL''.
  
  
 ===Mediante una ventana JFrame=== ===Mediante una ventana JFrame===
-La clase ''ChartFrame'', que hereda de ''JFrame'', ppermite crear una ventana que contiene únicamente el diagrama. Al constructor debemos pasarle el objeto ''JFreeChart'' con el diagrama:+La clase ''ChartFrame'', que hereda de ''JFrame'', permite crear una ventana que contiene únicamente el diagrama. Al constructor debemos pasarle el objeto ''JFreeChart'' con el diagrama:
 <code java> <code java>
-Chartframe ventana = new ChartFrame("Título de la ventana", diagrama);+Chartframe ventana = new ChartFrame("Titulo de la ventana", diagrama);
  
 +//La sentencia pack() ajusta el JFrame a su contenido
 +//Si queremos dar un tamaño concreto usamos ventana.size(400, 300) en lugar de pack()
 ventana.pack(); ventana.pack();
 +
 ventana.setVisible(true); ventana.setVisible(true);
  
Línea 436: Línea 441:
 También podriamos crear una misma ventana donde mostrar el diagrama deseado pulsando diferentes botones. También podriamos crear una misma ventana donde mostrar el diagrama deseado pulsando diferentes botones.
  
-===Exportado a fichero===+===Exportar a fichero===
 Podemos crear un fichero de imágen //jpg// ó //png// con la gráfica, usando los métodos estáticos de la clase ''ChartUtilities'':  Podemos crear un fichero de imágen //jpg// ó //png// con la gráfica, usando los métodos estáticos de la clase ''ChartUtilities'': 
  
Línea 498: Línea 503:
 Como hemos visto, con el IDE JasperSoft Studio podemos compilar los informes //.jrxml// y obtener directamente el fichero //.jasper//. Pero también podemos compilar el fichero //.jrxml// desde java: Como hemos visto, con el IDE JasperSoft Studio podemos compilar los informes //.jrxml// y obtener directamente el fichero //.jasper//. Pero también podemos compilar el fichero //.jrxml// desde java:
  
-Supongamos que tenemos el informe sin compilar en un //package// llamado "reports":+Supongamos que tenemos el informe sin compilar en un directorio de recursos llamado "reports":
  
 <code java> <code java>
Línea 522: Línea 527:
 HashSet<Vehiculo> vehiculos = obtenerVehiculos(); HashSet<Vehiculo> vehiculos = obtenerVehiculos();
  
-JasperReport report = (JasperReport) JRLoader.loadObject("informes/Vehiculos.jasper");+JasperReport report = (JasperReport) JRLoader.loadObject(new File("informes/Vehiculos.jasper"));
  
 JRBeanCollectionDataSource coleccion = new JRBeanCollectionDataSource(vehiculos); JRBeanCollectionDataSource coleccion = new JRBeanCollectionDataSource(vehiculos);
Línea 588: Línea 593:
  
 {{ vimeo>479592801?medium }} {{ vimeo>479592801?medium }}
 +
 +==== Ejemplo completo con IntelliJ ====
 +En el siguiente video realizado desde la perspectiva del IDE IntelliJ se realiza:
 +
 +  * Diseño de informe
 +  * Creación de librerias de clases desde IntelliJ
 +  * Utilización de esas librerías en JasperSoftStudio
 +  * Crear gráfico JFreeChart en Informe
 +  * Rellenar Informe
 +  * Mostrar informe
 +
 +{{ vimeo>515413350?medium }}
 +
 +==== Subinformes con JasperReport ====
 +Hasta ahora hemos visto como mostrar informes en los que se accede a algún atributo de una clase creada por nosotros. Los subinformes se utilizan cuando dentro de las filas de un informe, deseo incluir una colección indefinida de datos.
 +
 +En el siguiente video se diseña un informe que muestra los datos de una colección de asignaturas, y emplea un subinforme para mostrar también los alumnos matriculados en cada asignatura:
 +
 +
 +{{ vimeo>515937852?medium }}
 +
 ==== Dependencias de JasperReport ==== ==== Dependencias de JasperReport ====
  
Línea 597: Línea 623:
  
   - Apache Commons Logging:  [[https://commons.apache.org/proper/commons-logging/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-logging/commons-logging|repositorio de Maven]]. Se utiliza para guardar trazas de log.   - Apache Commons Logging:  [[https://commons.apache.org/proper/commons-logging/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-logging/commons-logging|repositorio de Maven]]. Se utiliza para guardar trazas de log.
-  - Apache Commons Digester 2.1: [[https://commons.apache.org/proper/commons-digester/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-digester/commons-digester|repositorio de Maven]]. Se usan para leer fichero de configuración XML.+  - Apache Commons Digester 2.1: [[https://commons.apache.org/proper/commons-digester/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-digester/commons-digester|repositorio de Maven]]. Se usan para leer ficheros de configuración XML.
   - Apache Commons Collections: [[https://commons.apache.org/proper/commons-collections/|sitio de Apache]] o [[https://mvnrepository.com/artifact/org.apache.commons/commons-collections4|repositorio de Maven]]. Para trabajar con datasources de colecciones. No necesario si genero informes desde una bbdd.   - Apache Commons Collections: [[https://commons.apache.org/proper/commons-collections/|sitio de Apache]] o [[https://mvnrepository.com/artifact/org.apache.commons/commons-collections4|repositorio de Maven]]. Para trabajar con datasources de colecciones. No necesario si genero informes desde una bbdd.
   - Apache Commons BeanUtils: [[http://commons.apache.org/proper/commons-beanutils/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils| repositorio de Maven]]. Para acceder dinámicamente a las propiedades de los objetos Java Beans.   - Apache Commons BeanUtils: [[http://commons.apache.org/proper/commons-beanutils/|sitio de Apache]] o [[https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils| repositorio de Maven]]. Para acceder dinámicamente a las propiedades de los objetos Java Beans.
Línea 631: Línea 657:
 <code java> <code java>
  
-//images es un package dentro de src+//images en un package dentro de src
 JLabel lblFoto = new JLabel(); JLabel lblFoto = new JLabel();
 lblFoto.setIcon(new ImageIcon(getClass().getResource("/images/foto.jpg")); lblFoto.setIcon(new ImageIcon(getClass().getResource("/images/foto.jpg"));
Línea 646: Línea 672:
  
 ==== Resources en IntelliJ ==== ==== Resources en IntelliJ ====
-El IDE IntelliJ nos permite desde la pestaña **File -> Project Structure -> Modules ** indican los directorios que contienen recursos, como vemos en la siguiente imagen:+El IDE IntelliJ nos permite indicar los directorios que contienen recursos desde la pestaña **File -> Project Structure -> Modules **, tal y como vemos en la siguiente imagen:
 {{ :bloque4:resources-intellij.png?direct&600 |}} {{ :bloque4:resources-intellij.png?direct&600 |}}
 +
 +Una vez que un directorio es marcado como directorio de recursos (//resources//), se incluye directamente en el //classpath//.
  
 Una vez que hemos seleccionado un directorio como directorio de recursos, para utilizar los ficheros que contiene debemos indicar la ruta del fichero tomando como punto de partida dicho directorio. Una vez que hemos seleccionado un directorio como directorio de recursos, para utilizar los ficheros que contiene debemos indicar la ruta del fichero tomando como punto de partida dicho directorio.
Línea 673: Línea 701:
 //Para usar el fichero grafico1.jpg //Para usar el fichero grafico1.jpg
 label2.setIcon(new ImageIcon(getClass().getResource("/graficos/grafico1.jpg"))); label2.setIcon(new ImageIcon(getClass().getResource("/graficos/grafico1.jpg")));
 +
 +//Para usar el informe Informe.jasper
 +JRLoader.loadObject(getClass().getResource("/Informe.jasper"));
  
 </code> </code>
bloque4/informes.1608253118.txt.gz · Última modificación: 2024/09/16 20:55 (editor externo)