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

Crear ejecutables con Matlab

1. En la ventana de comandos de matlab escribe «mbuild -setup«, sin comillas y presiona enter. >> mbuild -setup We[...]

«Hola Mundo» con Android Studio y Kotlin

Kotlin es un lenguaje de programación relativamente nuevo que ha ido ganando terreno en el desarrollo de aplicaciones pa[...]

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[...]

Petya: Nuevo ataque mundial de ransomware

Un nuevo ataque mundial de ransomware a bloqueado documentos electrónicos de dos grandes multinacionales españolas, la e[...]

JavaScript: Script y Web para generar banderas ondeando

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des[...]

Animación con sprites y LibGDX

En este post veremos una pequeña introducción a lo que son las animaciones con LibGDX y el uso de sprites. ¿Que es la an[...]