Fantástica noticia la que nos llega desde la comunidad “jasper”, se han lanzado al desarrollo de un nuevo ireport para plataforma NetBeans 6. Por el momento ya nos podemos descargar el plugin en beta preview, aunque en su web comentan que liberarán la versión final en FEBRERO 2008, a la vuelta de la esquina. Yo mientras voy a echarle un ojo a sus videos y capturas de pantalla.
Existen por lo menos dos métodos para poder abrir una aplicación swing a fullscreen.
La que mas me gusta, simplemente creamos un componente que herede de un JWindow, por ejemplo, y le asignamos las dimensiones de nuestra pantalla, esto funciona siempre:
-
public class pruebaFullScreen
extends JWindow
-
...
-
public pruebaFullScreen()
-
{
-
this.
setSize(Toolkit.
getDefaultToolkit().
getScreenSize());
-
this.setVisible(true);
-
this.
setBackground(Color.
YELLOW);
-
this.toFront();
-
this.setAlwaysOnTop(true);
-
}
Y la otra la explica a la perfección Antonio Calero en javahispano http://www.javahispano.org/contenidos/es/aplicaciones_a_pantalla_completa:
-
// Primero obtenemos una referencia al entorno gráfico de ventanas
-
-
// Obtenemos una referencia al dispositivo gráfico primario
-
gd = ge.getDefaultScreenDevice();
-
-
// Si no hay soporte adecuado lo mostramos por pantalla
-
if(!gd.
isFullScreenSupported()) System.
out.
println("WARNING: No hay soporte.\n");
-
else System.
out.
println("INFO: Detectado soporte\n");
-
try
-
{
-
// Activamos el modo a pantalla completa
-
gd.setFullScreenWindow(this);
-
}
-
-
{
-
e.printStackTrace();
-
}
Comentar que utilizando esta opción y dependiendo del S.O. que utilicemos pueden haber elementos del sistema que se sigan situando por encima de nuestra aplicación swing como por ejemplo el menú de xfce.
Os parecerá una tontería, pero algo mas de media mañana me he pasado averiguando como leches se imprimían informes horizontales con ireport. Como no podía ser de otra forma al final apareció, tan fácil como ir edit > report properties y en la pestaña more... de las propiedades del informe tenemos una opción Print Order para indicar si queremos que el informe se pinte en vertical u horizontal.
Amiguetes, por aquí seguimos probando y reprobando informes jasperreports. Hoy dejaré un par de apuntes de código que muestran como generar el informe final en pdf o xls teniendo ya el informe diseñado en un fichero .jasper, yo lo he hecho con el ireport, ¿alguien se atreve a hacerlo a mano?, por cierto, y ahora que nadie nos ve, habéis oído hablar de jarvis?, intentaré seguirlo de cerca, parece un plugín para generar informes jasperreport gráficamente en netbeans, pero todavía esta en betas. No me enrollo mas vamos al meollo:
A un informe jasper podremos pasarle tantos parametros como necesitemos para ello debemos crear un Hastable para luego pasarlo como parámetro en la generación del informe:
-
-
//A nuestro informe de prueba le vamos a enviar la fecha de hoy
-
parameters.
put ("fechainicio",
new Date() );
Para exportar a formato pdf:
-
ServletOutputStream out;
-
// Creamos un objecto jasper con el fichero previamente compilado
-
JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("/javi/InformeDemo.jasper");
-
-
// Generamos el informe pasandole como parametros el objecto creado anteriormente jasperReport, parameters que es el hashmap
-
// creado anteriormente con todos los parametros que necesitemos enviarle al informe y conn una conexión activa con vuestro
-
// servidor de BD
-
byte[] fichero = JasperRunManager.runReportToPdf (jasperReport, parameters, conn);
-
-
// Y enviamos el pdf a la salida del navegador como podríamos hacer con cualquier otro pdf
-
response.setContentType ("application/pdf");
-
response.setHeader ("Content-disposition", "inline; filename=informeDemo.pdf");
-
response.setHeader ("Cache-Control", "max-age=30");
-
response.setHeader ("Pragma", "No-cache");
-
response.setDateHeader ("Expires", 0);
-
response.setContentLength (fichero.length);
-
out = response.getOutputStream ();
-
-
out.write (fichero, 0, fichero.length);
-
out.flush ();
-
out.close ();
Y esta vez probaremos también a generarlo como un xls para excell:
-
int bit;
-
-
-
ServletOutputStream out;
-
-
JasperPrint jasperPrint=JasperFillManager.fillReport ("/javi/InformeDemo.jasper", parameters, conn);
-
String xlsFileName =
"informeDemo.xls";
-
-
//Creacion del XLS
-
JRXlsExporter exporter = new JRXlsExporter ();
-
exporter.setParameter (JRExporterParameter.JASPER_PRINT, jasperPrint);
-
exporter.setParameter (JRExporterParameter.OUTPUT_FILE_NAME, xlsFileName);
-
exporter.
setParameter (JRXlsExporterParameter.
IS_ONE_PAGE_PER_SHEET,
Boolean.
TRUE);
-
exporter.exportReport ();
-
-
// En este punto ya esta Creado el XLS
-
// Ahora leemos el fichero y forzamos al navegador a que nos descargue el fichero.
-
f =
new File ( xlsFileName
);
-
-
response.setContentType ("application/vnd.ms-excel"); //Tipo de fichero.
-
response.setHeader ("Content-Disposition", "attachment;filename=\"" + xlsFileName + "\""); //Configurar cabecera http
-
-
-
out = response.getOutputStream ();
-
-
bit = 256;
-
while ((bit)>= 0)
-
{
-
bit = in.read ();
-
out.write (bit);
-
}
-
-
out.flush ();
-
out.close ();
-
in.close ();
Y esto ha sido todo por hoy, todavía me queda mucha estadística que machacar, para la próxima mas!