Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Java2D / Imprimir Swing

Imprimir Swing

Autor 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

Tags

Si te ha gustado podr铆as compartirlo o dejar un comentario. 隆Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnolog铆a en Bolivia.

Toda la informaci贸n que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si as铆 lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

Tambi茅n Te Podr铆a Interesar

MVC Java y Base de Datos Tutorial

MVC Java y Base de Datos Tutorial

En post pasados [Ejemplo pr谩ctico de MVC java Swing con Netbeans,聽3 en raya java con MVC y Netbeans ,聽MVC: Modelo, Vista...

Leer archivos de texto

Leer archivos de texto

En este tutorial de android, vemos como leer un archivo de texto y mostrarlo en pantalla del celular, el texto elegido e...

GSON: Generar JSON desde objetos Java

GSON: Generar JSON desde objetos Java

Gson es una biblioteca de c贸digo abierto para Java desarrollado por Google Inc que permite la serializaci贸n y deserializ...

Esteganograf铆a y encriptaci贸n de im谩genes en Linux

Esteganograf铆a y encriptaci贸n de im谩genes en Linux

En un post anterior conocimos una herramienta Open Source聽con un conjunto de herramientas para el trabajo con im谩genes e...

Compartir texto plano con un ShareActionProvider en Android

Compartir texto plano con un ShareActionProvider en Android

Un Action Provider es un elemento que habita en la Action Bar para incrementar la accesibilidad de nuestras aplicaciones...

C贸digo CSS en Java/Netbeans

C贸digo CSS en Java/Netbeans

Los objetos como JLabel o JButton nos permiten hacer uso de c贸digo CSS en su propiedad TEXT, asi podemos adornar el text...

8 comentarios en “Imprimir Swing”

  1. antonio dice:

    te tengo una pregunta:
    por que me marca error en esta parte del codigo
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    en 芦getImageableX()禄 y 芦getImageableY()禄
    gracias por tu pronta respuesta…

    1. Mouse dice:

      驴cual es el error? 馃檪

  2. Carlos Mario dice:

    Hola, Estoy haciendo desde hace un largo tiempo una aplicaci贸n para votaciones estudiantiles y no SABES cuanto me ha servido esto.

    No Tengo nada mas que agradecerte Mucho por compartir tu conocimiento con los dem谩s 馃檪

  3. Robert dice:

    Muy bueno !! ^^ si Funcioona gracias amigo!

  4. Nata dice:

    GRACIAS, POR FIN FUNCIONA 馃榾

  5. Azu dice:

    Funcion贸 a la perfecci贸n ,muchas gracias!!

  6. Nereo Alfredo dice:

    Disculpa y para imprimir por ambos lados de la hoja???

    1. Mouse dice:

      debes configurar hojas de impresi贸n es decir establecer 谩rea de impresi贸n para cada hoja en este caso panel

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

脷ltimas entradas

Las empresas GeoSystems e Inteligencia Geoespacial (Igeo) en聽coordinaci贸n con el Gobierno Nacional de Bolivia,聽 desarrol...

驴Sabia que por la pandemia que azota a la mayor铆a de los pa铆ses de la Tierra, la mitad de la poblaci贸n estudiantil del m...

El gigante de la tecnolog铆a Microsoft ha lanzado un mapa interactivo para proporcionar informaci贸n sobre la propagaci贸n...

El gigante de la inform谩tica Google, ante la reciente聽pandemia mundial declarada por la OMS (Organizaci贸n聽Mundial de la...

Herramientas

Generador de Enlaces a Whatsapp