En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable.
La clase que implementa Printable debe sobreescribir el método print para indicarle al PrintJob que componente de nuestra interfaz de usuario debe imprimir, esto en la instancia que implementa Printable que llama para imprimir los gráficos.
Pero comprenderemos mucho mejor con un ejemplo.
Si tuviéramos un formulario como el siguiente:
Y si queremos imprimir ciertas partes del mismo o todo el formulario en si, podemos hacerlo con la siguiente clase «MiPrintable.java». El código es el siguiente:
import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.print.PageFormat; import java.awt.print.Printable; import static java.awt.print.Printable.NO_SUCH_PAGE; import static java.awt.print.Printable.PAGE_EXISTS; import java.awt.print.PrinterException; /** * @see https://www.jc-mouse.net * @author mouse */ public class MiPrintable implements Printable { private Component component; public MiPrintable(Component component) { this.component = component; } @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex > 0) { return NO_SUCH_PAGE; } Graphics2D g2d = (Graphics2D) graphics; g2d.translate(20, 20); component.paint(g2d); return PAGE_EXISTS; } }
Esta clase debemos implementarla en donde queramos hacer la llamada a impresión con PrinterJob. por ejemplo des de un botón [Imprimir GUI]
1 private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) { 2 MiPrintable mp = new MiPrintable(this); 3 PrinterJob job = PrinterJob.getPrinterJob(); 4 job.setPrintable(mp); 5 boolean ok = job.printDialog(); 6 if (ok) { 7 try { 8 job.print(); 9 } catch (PrinterException ex) { 10 System.err.println(ex.getMessage()); 11 } 12 } 13 }
donde en [2] al crear una nueva instancia de nuestra clase MiPrintable,java, pasamos como parámetro el componente que queremos imprimir, en este caso todo el formulario completo (this), ejecutando tenemos:
Y de la misma forma, para cada sección en particular que queramos imprimir, solo debemos indicar el componente en «MiPrintable.java»
enjoy!!!
TextInput es una caja de texto que implementa el estilo de Material Design popular en dispositivos móviles, pero este sw[...]
Problema: Implemente el código necesario en Kotlin para resolver una ecuación de segundo grado de números reales: Soluci[...]
ImageMagick es un software de código abierto multiplataforma que contiene una serie de herramientas para leer, mostrar,[...]
Agregar una imagen a un jpanel o a un jframe no es complicado pero para un programador novato puede convertirse en todo[...]
Continuando con estos post de Cliente/Servidor, en esta oportunidad realizaremos un ejemplo usando un dispositivo móvil[...]
Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del[...]