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 .