Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Impresión de Interfaz Gráfica de Usuario

Impresión de Interfaz Gráfica de Usuario

Por jc mouse domingo, marzo 24, 2019

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.

print gui

Si  tuviéramos un formulario como el siguiente:

app demo

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:

pdf printer

Y de la misma forma, para cada sección en particular que queramos imprimir, solo debemos indicar el componente en «MiPrintable.java»

printable document

enjoy!!!

Tags

Artículos similares

5 apps gratuitas para aprender idiomas

El confinamiento causado por el covid-19, son una gran oportunidad para realizar varias actividades en casa y desde casa[...]

Imprimir Swing

Java Printing nos permite hacer uso de las impresoras del sistema para, valga la redundancia 🙂 imprimir los gráficos de[...]

Dibujar Bitmap en Android

Android cuenta con una serie de herramientas en su API para el trabajo con gráficos, entre estos podemos mencionar: Bitm[...]

Código Único de Factura en C Sharp

En este post implementamos el «Código Único de Factura» según la documentación otorgada por Impuestos Bolivia en su siti[...]

Insert, Update, Delete con Access y C#

En un post anterior vimos la forma de conectarnos a una base de datos Access con C#, pero de nada nos sirve solo conecta[...]

Crea patrón de desbloqueo para tus app java

El patrón de desbloqueo es una medida de seguridad que tienen algunos teléfonos inteligentes para evitar el acceso al di[...]