lunes, 20 de agosto de 2012

Cargar datos,Imprimir,añadir encabezado y pie de pagina con JTextArea


hoy esLUNES,díade desempolvar mibaúldecódigos y les traigo una pieza decódigo muyútila la hora de imprimir texto en java,en este ejemploaprenderása cargar datos desde un fichero de texto de una manera masrápiday sencilla,colocar encabezado y pie de pagina en la hoja.

primeroconozcamosestos elementos

SwingWorker:diseñado para situaciones donde se necesita tener una tarea de larga ejecución se ejecutan en un subproceso en segundo plano y proporcionar actualizaciones de la interfaz de usuario.

MessageFormat:proporciona un medio para producir mensajes concatenados en forma independiente.
print:este método sirve para imprimir el componente.

una vez entendido esto pasamos alcódigo, primero vamos a cargar o leer un fichero de texto esto se lo puede hacer de varias formas pero la masfácily casi menos utilizada les digo esto por que al consultar como leer un fichero de texto en java les aparece uncódigo de varias lineas,pero con el componente JTextArea el cual posee una propiedad que se llamaread podemos leer un fircherorápidamenteasi:


  comp.read( new InputStreamReader(getClass().getResourceAsStream(fileName)),null);


Eso es todo, de esta manera leemos un fichero de texto.

Como imprimimos el Componente?
primero creo una clase interna tipo SwingWorker que en resume en miopiniónes un hilo, y esta formado por losmétodoscomo este.
 protected Object doInBackground() {
try {
que_paso = jTextArea.print(formato_cabecera, formato_pie, true, null, null, prgreso); mensaje_custion = "Impresion " + (que_paso ? "completada" : "cancelada");
} catch (PrinterException ex) {
mensaje_custion = "se produjo un error de impresión";
} catch (SecurityException ex) {
mensaje_custion =" no puede acceder a la impresora por razones de seguridad";
}
return null;
}

Con estemétodo,función, llamamos a la propiedadprint delJTextArea ,que nos permite imprimir el contenido de este componente.

Ejecucion
para ejecutar el hilo SwingWorker, tenemos el siguiente codigo.

  MessageFormat cabecera = Creame_Formato(txt_cabecera);
MessageFormat pie = Creame_Formato(txt_pie);

boolean progres = CHECK_progreso.isSelected();
boolean plano = check_plano.isSelected();

PrintingTask task = new PrintingTask(cabecera, pie, progres);
if (plano)
{
task.execute();
}
else
{
task.run();
}


aquí desencadeno la clase del hilo y envió los valores del encabezado y pie de pagina,una vez ejecutado esto nos aparecerá esta ventana de la impresión.



DESCARGAR







No hay comentarios:

Publicar un comentario