Imprimir a tela inteira do sistema

6 respostas
homisinho

Ola pessoal,
eu preciso imprimir a tela inteira do meu sistema eu to usando um JFrame.
Eu pesquisei no forum e n encontrei…

Desde já obrigado.

6 Respostas

_fs

Facinho ;D

homisinho

n tem nada nesse mov q vc mandou cara…
ou eu n entendi…

_fs

ctrl+c errado -_-

link certo:
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-Printing.html

homisinho

coloquei esse codigo no evento de um botao q esta na janela q quero imprimir....

PrinterJob printJob = PrinterJob.getPrinterJob();

    [b]printJob.setPrintable(this);[/b]

    if (printJob.printDialog())
      try { 
        printJob.print();
      } catch(PrinterException pe) {
        System.out.println("Error printing: " + pe);
      }

O netbeans acusa cannot find simbol.....
dei uma olhada o metodo setPrintable requer um parametro "Printable painer"

desculpa a ignorancia amigo, mas poderia me dar uma mão é q estou começando a utilizar java....

homisinho

Foi mal ai... n tinha terminado d le o artigo e ja tva perguntando....
agora criei a classe abaixo postada e dei um print....
funcionou blz....

package cew3000;

import java.awt.*;
import javax.swing.*;
import java.awt.print.*;

public class PrintUtilities implements Printable {
  private Component componentToBePrinted;

  public static void printComponent(Component c) {
    new PrintUtilities(c).print();
  }
  
  public PrintUtilities(Component componentToBePrinted) {
    this.componentToBePrinted = componentToBePrinted;
  }
  
  public void print() {
    PrinterJob printJob = PrinterJob.getPrinterJob();
    printJob.setPrintable(this);
    if (printJob.printDialog())
      try {
        printJob.print();
      } catch(PrinterException pe) {
        System.out.println("Error printing: " + pe);
      }
  }

  public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
    if (pageIndex &gt 0) {
      return(NO_SUCH_PAGE);
    } else {
      Graphics2D g2d = (Graphics2D)g;
      g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
      disableDoubleBuffering(componentToBePrinted);
      componentToBePrinted.paint(g2d);
      enableDoubleBuffering(componentToBePrinted);
      return(PAGE_EXISTS);
    }
  }

  public static void disableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(false);
  }

  public static void enableDoubleBuffering(Component c) {
    RepaintManager currentManager = RepaintManager.currentManager(c);
    currentManager.setDoubleBufferingEnabled(true);
  }
}

unica coisa q ficou ruim e q a minha tela e bem grande e deve ser impressa como paisagem....

tem como sair modo paisagem marcado como default na janela de configuração da impressora???

Cleber_Carvalho

Filipe Sabella, Valeu o Tutorial é muito bom e foi de grande ajuda…

Criado 17 de maio de 2007
Ultima resposta 8 de fev. de 2012
Respostas 6
Participantes 3