Cualquier cosa que podamos dibujar en la pantalla tambi�n puede ser imprimida. Podemos f�cilmente usar un 'printable job' para imprimir el contenido de un componente.
�Ejemplo: ShapesPrint
En este ejmplo usamos el mismo c�digo de dibujo para mostrar e imprimir los contenidos de un componente. Cuando el usuario pulsa sobre el bot�n print, se crea un 'print job' y se llama a printDialog para mostrar el di�logo de impresi�n. Si el usuario cont�nua con el trabajo, el proceso de impresi�n se inicia, y el sistema de impresi�n llama a print cuando sea necesario renderizar el trabajo a la impresora.

ShapesPrint es el 'page painter'. Su m�todo print llama a drawShapes para realizar el dibujo del 'print job'. (Tambi�n se llama al m�todo drawShapes por parte de paintComponent para dibujar en la pantalla.)
public class ShapesPrint extends JPanel implements Printable, ActionListener { ... public int print(Graphics g, PageFormat pf, int pi) throws PrinterException { if (pi >= 1) { return Printable.NO_SUCH_PAGE; } drawShapes((Graphics2D) g); return Printable.PAGE_EXISTS; } ... public void drawShapes(Graphics2D g2) { Dimension d = getSize(); int gridWidth = 400/6; int gridHeight = 300/2; int rowspacing = 5; int columnspacing = 7; int rectWidth = gridWidth - columnspacing; int rectHeight = gridHeight - rowspacing; ... int x = 85; int y = 87; ... g2.draw(new Rectangle2D.Double(x,y,rectWidth,rectHeight)); ...
El c�digo de control del trabajo est� en el m�todo actionPerformed de ShapesPrint
public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof JButton) { PrinterJob printJob = PrinterJob.getPrinterJob(); printJob.setPrintable(this); if (printJob.printDialog()) { try { printJob.print(); } catch (Exception ex) { ex.printStackTrace(); } } } }
Puedes encontrar el c�digo completo de este programa en ShapesPrint.java .