Programación en castellano
-Tutoriales

Gráficos con Java 2D


Imprimir los Contenidos de un Componente

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 .

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados