Sie sind auf Seite 1von 8

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda

Introduo

Imprimir um texto em Java muitas vezes soa como algo difcil, e exige a leitura de vrias APIs, que, por ser em ingls, assusta com freqncia os iniciantes. Aqui, mostrarei uma maneira simples de imprimir um texto, utilizando uma classe que contm apenas um mtodo. Note que esta classe no apresenta nenhuma sintaxe extends , implements ou outras variantes, sendo uma classe independente. Logo, pode-se alter-la de acordo com a necessidade do seu desenvolvimento. Note tambm, ao ver o cdigo fonte, que este meio de utilizar a impressora mais vivel quando se sabe o que ser impresso, sendo difcil de utiliz-la para imprimir textos grandes, ou Strings gigantescas, que no cabe em uma linha. Vamos ao tutorial.

Cdigo da Classe Iniciaremos com as classes do JDK que sero utilizadas no cdigo:

import java.awt.Graphics; import java.awt.PrintJob; import java.awt.Toolkit; import java.awt.Frame; //Todas as classes so do pacote java.awt. Voc pode importar o pacote inteiro, mostramos aqui quais so as classes especficas //Vamos agora classe principal public class Impressora { public void imprimir() { // cria um frame temporrio, onde ser desenhado o texto a ser impresso Frame f = new Frame( Frame temporrio ); f.pack(); // pega o Toolkit do Frame Toolkit tk = f.getToolkit(); // Pega os servios de impresso existentes no computador, // para que seja escolhida uma impressora. // Tambm pode ser uma impressora de rede PrintJob pj = tk.getPrintJob(f, print , null); // Aqui se inicia a impresso if (pj != null) { Graphics g = pj.getGraphics(); g.drawString( Teste de impresso , 50, 30); g.drawString( linha 1 , 50, 70);

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda g,drawString( linha 2 , 50, 95); g.drawString( pgina 1 , 500, 810); // libera os recursos grficos g.dispose(); // encerra a impresso pj.end(); } // desfaz o frame temporrio f.dispose(); } // Mtodo main para teste Public static void main(String[] args) { Impressora imp = new Impressora(); Imp.imprimir(); } }

A impresso propriamente dita se inicia a partir do comando if. Logo seu texto s impresso se for escolhido uma impressora e confirmado o servio clicando em OK. O comando que merece ter uma ateno especial o drawString. um mtodo includo na classe Graphics do pacote java.awt. Sua sintaxe a seguinte:

drawGraphics(String texto, int x, int y);

onde texto o texto a ser desenhado no frame, e x e y so as coordenadas de onde ser desenhado o primeiro caractere do texto. Estas coordenadas representam os pixels que seriam impressos no papel, como mostrado a seguir:

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda

| ----------------------- x ------------------------- | | | | | | | | | | | | y | | | | | | | | | | | -

Esquema das coordenadas (x,y) no papel. Figura 1.1

No mtodo acima, o resultado da impresso seria a seguinte:

Teste de impresso linha 1 linha 2

pgina 1

Figura 1.2

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda Voc pode ter controle total sobre o que ser impresso e suas posies. Porm, para textos grandes, implementar este mtodo poderia ser algo exaustivo. Porm, pode ser muito til para imprimir vrias informaes semelhantes, como dados pessoais de vrias pessoas, uma relao de estoque, entre outros exemplos.

2 - Imprimindo uma folha de dados de clientes Vamos imaginar que exista uma classe que faa parte do seu projeto, chamada Cliente. Esta classe possui os mtodos getCadastro(), getNome(), getEndereco(), getFone(), todos retornam Strings. Queremos imprimir ento uma relao de todos os cadastrados no seu programa. Logo o mtodo para imprimir seria este: Imp.imprimir(minhaLista);

Onde minhaLista seria um objeto que implementa a interface List. Veja como seria o cdigo: import java.awt.Graphics; import java.awt.PrintJob; import java.awt.Toolkit; import java.awt.Frame; import java.util.List; public class Impressora { public void imprimir(List lista) { // cria um frame temporrio, onde ser desenhado o texto a ser impresso Frame f = new Frame( Frame temporrio ); f.pack(); // pega o Toolkit do Frame Toolkit tk = f.getToolkit(); // Pega os servios de impresso existentes no computador, // para que seja escolhida uma impressora. // Tambm pode ser uma impressora de rede PrintJob pj = tk.getPrintJob(f, print , null); // Aqui inicia-se a impressao if (pj != null) { Graphics g = pj.getGraphics(); g.drawString( Relacao de clientes , 50, 30); int y = 70; for(int i = 0; i < lista.size(); i++) { Cliente c = (Cliente)lista.get(i); g.drawString( Cadastro: + c.getCadastro(), 50, y);

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda y += 25; g.drawString( Nome: + c.getNome() , 50, y); y+= 25; g,drawString( Endereo: + c.getEndereco(), 50, y); y+= 25; g.drawString( Telefone: + c.getFone(), 50, y); y+= 50; } // libera os recursos grficos g.dispose(); // encerra a impresso pj.end(); } // desfaz o frame temporrio f.dispose(); } }

A impresso no papel apresentaria um cabealho Relao de clientes, pularia para a posio (50, 70) da folha, e a partir da, imprimiria uma linha a cada 25 posies de Y. No final dos dados do cliente, seria dado um espao maior (y += 50) para imprimir o prximo cliente. extremamente simples modificar este mtodo para outros tipos de impresso, e coloc-los no mesmo programa. Porm, quem copiar/ colar esta classe no seu projeto Java, notar o seguinte: S funciona para uma folha! Como imprimir vrias folhas? Veremos a seguir.

3 - Imprimindo vrias pginas Agora que voc j sabe como imprimir uma folha, resta apenas saber como imprimir vrias folhas em uma nica chamada. Se houver 20 clientes? Se houver 100 clientes? Com certeza no caberia numa folha s. O primeiro passo saber quanto espao ocupa a impresso de um nico cliente em uma folha de papel. Basta medir com uma rgua, e dividir os espaos para saber quantos clientes cabem em uma nica folha. Digamos, hipoteticamente, que durante os testes de impresso e clculos, foi concludo que cabem 5 clientes em cada folha. Qual o raciocnio deveramos seguir para imprimir todos os 50 clientes? Seria iniciar a impresso, imprimir 5 clientes, pegar outra folha, imprimir mais 5, at que no exista mais clientes a serem impressos. Poderamos seguir este raciocnio com este pseudo-cdigo: se existir impressora faca

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda para i = 1 ate numero de clientes imprime o cabecalho para j = i ate i + 5 se j <= que o numero de clientes imprime o cliente j i=i+5 encerra a impressao Note que no primeiro loop, o nmero inteiro i, incrementado de 5 em 5, ou seja, o numero de clientes que ser impresso em cada pagina. O nmero inteiro j quem faz a impresso propriamente dita, desenhando na folha cada cliente. Se o numero do cliente selecionado for maior do que o nmero de clientes, o cliente no impresso. Se isso acontecer, significa que i tambm maior que o nmero de clientes, e o loop se encerraria. Est concluda a impresso! Veja como seria o cdigo: import java.awt.Graphics; import java.awt.PrintJob; import java.awt.Toolkit; import java.awt.Frame; import java.util.List; public class Impressora { public void imprimir(List lista) { // cria um frame temporrio, onde ser desenhado o texto a ser impresso Frame f = new Frame( Frame temporario ); f.pack(); // pega o Toolkit do Frame Toolkit tk = f.getToolkit(); // Pega os servios de impresso existentes no computador, // para que seja escolhida uma impressora. // Tambm pode ser uma impressora de rede PrintJob pj = tk.getPrintJob(f, print , null); // Aqui inicia-se a impresso if (pj != null) { int pagina = 1; for(int i = 0; i < lista.size(); i+=5) { Graphics g = pj.getGraphics(); g.drawString( Relacao de clientes , 50, 30) int y = 70; for(int j = i; j <I + 5; j++) { if(j < lista.size()) { Cliente c = (Cliente)lista.get(j);

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda g.drawString( Cadastro: + c.getCadastro(), 50, y); y += 25; g.drawString( Nome: + c.getNome() , 50, y); y+= 25; g,drawString( Endereo: + c.getEndereco(), 50, y); y+= 25; g.drawString( Telefone: + c.getFone(), 50, y); y+= 30; g.drawLine(25, y, 500, y); y+= 40; } } g.drawString( pagina + pagina, 500, 810); pagina++; // libera os recursos grficos g.dispose(); } // encerra a impresso pj.end(); } // desfaz o frame temporrio f.dispose(); } }

Concluso Este um meio prtico para iniciantes que desejam imprimir dados dos seus programas, mas no querem perder muito tempo raciocinando e criando classes e mtodos para fazer algo que pode ser mais simples. Porm, como pode realmente ser visto, este mtodo pode no ser adequado para quem deseja imprimir de modo mais complexo, e sem uma padronizao especfica do texto. Espero que se possa fazer bom uso deste tutorial. Sobre o autor Kewber R. B. A. Arruda. E-mail: anjoedemonio@ig.com.br Referncias Graphics - http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics.html PrintJob - http://java.sun.com/j2se/1.5.0/docs/api/java/awt/PrintJob.html

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Portal Java Tutorial: Um meio simples de imprimir um texto por Kewber Arruda

Toolkit - http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Toolkit.html java.awt.print - http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/package-frame.html javax.print - http://java.sun.com/j2se/1.5.0/docs/api/javax/print/package-frame.html

Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.

Das könnte Ihnen auch gefallen