Estou com um problema na linha 20. O getGraphics não está retornando nada e dá um erro NullPointerException.
Estava tentando usar uma impressora na rede.
Alguém pode me dizer o pq do erro?
[code]import java.awt.;
import java.awt.Graphics.;
import java.io.*;
public class ImprimirArquivo {
public static void main(String a[]) throws IOException{
// frame temporário
Frame f = new Frame("Teste de Impressão");
f.pack();
// obtenção do Toolkit
Toolkit tk = f.getToolkit();
// inicio de sessão de impressão
PrintJob pj = tk.getPrintJob(f, "print1", null);
// impressão
if (pj!=null) { // testa de PrintJob válido
[b]Graphics g = pj.getGraphics();[/b] // obtém contexto gráfico
g.drawString("Teste de Impressão", 10, 10);
int y=25;
BufferedReader in = new BufferedReader(new FileReader(a[0]));
//taOutput.setText("");
String line;
//StringBuffer buffer = new StringBuffer();
while((line = in.readLine()) != null)
{g.drawString(line, 25, y);
y+=25;}
in.close();
g.drawLine(25, 250, 325, 250);
g.fillOval(150, 225, 50, 50);
// liberação dos recursos
g.dispose(); // libera recursos do contexto gráfico
pj.end(); // encerra impressão
}
// liberação do Frame temporário
f.dispose();
// fim
System.exit(0);
}
}[/code]
Agora vai mano[code]
import java.awt.print.;
import java.awt.;
import javax.swing.*;
public class ImpressaoGenerica implements Printable{
private String[] linhas;
private String cabecalho, rodape;
private int cont_linhas, folha;
public ImpressaoGenerica( ){
this.folha = 1;
this.cabecalho = "TESTE";
this.rodape = "TESTANDO";
}
public int print(Graphics g, PageFormat pf, int pageIndex){
try{
g.setFont(new Font("Arial",Font.BOLD, 18));
g.drawString(cabecalho, 60, 75);
g.setFont(new Font("Courier",Font.PLAIN, 10));
g.drawString( "Teste" , 20, 140 );
g.setFont(new Font("Arial",Font.PLAIN, 10));
g.drawString( rodape, 79, 660 );
}
catch( Exception e ){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Exception3: " + e.toString());
}
return Printable.PAGE_EXISTS;
}
public static void main(String args[]){
try{
PrinterJob job = PrinterJob.getPrinterJob();
PageFormat landscape = job.defaultPage();
Paper paper = new Paper();
paper.setImageableArea(0, 0, 600, 900);
paper.setSize(600, 900);
landscape.setPaper( paper );
Book bk = new Book();
bk.append( new ImpressaoGenerica( ), landscape );
job.setPageable(bk);
if (job.printDialog()) {
try {
job.print();
}
catch(Exception exc){
exc.printStackTrace();
JOptionPane.showMessageDialog(null, "Exception1: " + exc.toString());
}
}
}
catch( Exception e ){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Exception2: " + e.toString());
}
}
}
[/code]
Agora uma dúvida de iniciante: eu usei esse seu exemplo pra imprimir um relatório de nomes de clientes…dai eu criei um while com drawstrings dentro pra ir imprimindo o nome deles(q tão armazenados num ResultSet)…como eu faço pra continuar imprimindo numa nova página?
Eu sei q em uma página cabem uns 60 clientes…
Eu estou passando os parâmetros de forma errada? Qual o jeito certo? Tem como dar um exemplo?
Valeu…
Outra dúvida d iniciante…
Vc diz usar impressora em rede… como se usa uma impressora em rede em java? Ou alguma outra maneira (eu preciso muito disso)