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

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic d[...]

Crear web multi-lenguaje con php

En este tutorial realizaremos un proyecto web de un «sitio multi lenguaje» o «web multi idiomas» como prefieran llamarlo[...]

Aprende a usar transacciones con Laravel

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a[...]

Introduccion a la programacion shell

En este post veremos una muy pequeña introducción de lo que es el mundo de la programación en shell de Linux. Necesitamo[...]

Crea un plugin WP con panel de administracion

En este post crearemos un plugin para el CMS WordPress el cual comprende el plugin en si, un panel de administración y e[...]

Hermes: El Motor de código abierto JavaScript de Facebook

En la convención de Chain React  en Portland (Oregon), Marc Horowitz ingeniero de software en Facebook presentó el motor[...]