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 / Java2D / Imprimir Swing

Imprimir Swing

Por jc mouse jueves, mayo 3, 2012

Java Printing nos permite hacer uso de las impresoras del sistema para, valga la redundancia 🙂 imprimir los gráficos de java2d, para que esto sea posible, debe implementarse el objeto abstracto Printable en las clases que quieran hacer uso de esa propiedad. Veamos un ejemplo:

1. Crea un nuevo proyecto en netbeans y añade un JFrame (Nombre: interfaz.java), añade un JButton (Nombre: cmdPrint) y si quieres añade algunos controles swing tambien

proyecto netbeans

2. Dirígete al código del JFrame, las librerias que utilizamos son:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

Debes añadir estas en la cabecera del JFrame

3. Ahora debemos implementar el Printable al JFrame, por defecto netbeans lo crea de la siguiente manera:

public class interfaz extends javax.swing.JFrame {

Debes modificarlo para que se vea asi:

public class interfaz extends javax.swing.JFrame implements Printable {

Netbeans te muestra una alerta que te dice «Implementar todos los métodos abstractos», debes implementarlos haciendo clic sobre el aviso. Te genera una funcion propia del Printable:

    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

4.  Reemplaza el método generado PRINT por:

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException  {
        if (pageIndex == 0)
        {
            Graphics2D g2d = (Graphics2D) graphics;
            g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
            this.printAll(graphics);
            return PAGE_EXISTS;
        }
        else
            return NO_SUCH_PAGE;        
    }

5.  Para terminar implementamos la accion Print desde el JButton (cmdPrint), el código es:

 private void cmdPrintActionPerformed(java.awt.event.ActionEvent evt) {
        //Crea y devuelve un printerjob que se asocia con la impresora predeterminada
        //del sistema, si no hay, retorna NULL
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        //Se pasa la instancia del JFrame al PrinterJob
        printerJob.setPrintable(this);
        //muestra ventana de dialogo para imprimir
        if ( printerJob.printDialog())
        {
            try {
                printerJob.print();
            } catch (PrinterException ex) {
            System.out.println("Error:" + ex);
            }
        }
    }

Eso es todo, implementa la interfaz desde el Main y ejecuta, si tienes una impresora instalada en tu equipo, cuando presiones el boton «Imprimir JFrame» saldrá la ventana de dialogo propia de tu impresora

Yo utilice una impresora virtual para imprimir en formato PDF y el resultado es el siguiente:

PDF JFrame

Archivos del proyecto Printable estan en este enlace 

enjoy!!!

Tags

Artículos similares

Conexión a base de datos Access con C#

En este post veremos como conectarnos a una base de datos Access con C# En un nuevo proyecto en consola con Visual Studi[...]

Descarga 100K retratos generados por IA totalmente gratis

La IA (Inteigencia Artificial) ha existido durante décadas, pero solo en estos últimos años ha ido evolucionando a pasos[...]

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

JavaFX y ApiRest – GET

En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x[...]

Proyecto Ascii Art (metodo de Black/white)

El Ascii Art o Arte Ascii, consiste en realizar dibujos con los caracteres ASCII (Código Americano Estándar de Intercamb[...]

Generar reportes con origen de datos JSON

JSON es un formato de texto ligero para el intercambio de datos ampliamente usado en los Servicios Web. En este post uti[...]