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
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:
Archivos del proyecto Printable estan en este enlace
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! :)
En esta oportunidad, se deja a disposición de la comunidad de programadores de Bolivia y también porque no, del que quie...
Nivel: Intermedio-Avanzado IDE: Netbeans 6.9 o Sup. Tiempo: 30 minutos En este tutorial crearemos una aplicación que nos...
Tenemos un archivo de base de datos Access *.MDB y queremos realizar una consulta con parámetros de búsqueda utilizando...
Hace un par de años atras google para el aniversario del juego de Pacman saco un doodle en su homenaje, ese doodle que s...
Entre las muchas aplicaciones que hay en la playstore de google están las galerías de fotos de chicas 🙂 que tantos nos e...
Entre los correos y mensajes en facebook y whatsapp que me llegan (y de entrada pido perdón a quienes no puedo responder...
Los comentarios estan cerrados
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
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…
¿cual es el error? 🙂
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 🙂
Muy bueno !! ^^ si Funcioona gracias amigo!
GRACIAS, POR FIN FUNCIONA 😀
Funcionó a la perfección ,muchas gracias!!
Disculpa y para imprimir por ambos lados de la hoja???
debes configurar hojas de impresión es decir establecer área de impresión para cada hoja en este caso panel