Galera... é o seguinte, vou especificar totalmente o meu problema:
Tenho o seguinte programa onde eu gerencio dados por uma tabela. Todos os dados são pegos de um banco e atualizados em tempo real quando o programa está sendo executado:
[img]http://img67.imageshack.us/img67/2726/postkj3.jpg[/img]
Pois então, não sei como eu posso imprimir essa tabela numa página. Gostaria de imprimir só os três campos centrais da tabela de cada dado.
Meu código de impressão está funcionando maneiro quando se passa uma String. A não ser que ele não pula para a linha de baixa quando o String é muito grande:package imp;
import java.awt.print.Paper;
import java.net.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.OrientationRequested;
public class Impressao implements Printable {
/**
* Efetua impressão do texto passado como parâmetro.
* @param texto
*/
public Impressao(String texto) {
text += texto;
Paper paper = new Paper();
paper.setImageableArea(-10,-10,500,500);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(OrientationRequested.PORTRAIT);
aset.add(new Copies(1));
aset.add(new JobName("Relatório", null));
/*
* Cria um "Printer job"
*/
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(this);
/*
* Localiza um serviço de impressão
* que possa tratar esta requisção.
*/
PrintService[] services = PrinterJob.lookupPrintServices();
if (services.length > 0) {
System.out.println("Impressora selecionada: " + services[0].getName());
try {
pj.setPrintService(services[0]);
pj.pageDialog(aset);
if (pj.printDialog(aset)) {
pj.print(aset);
}
} catch (PrinterException pe) {
System.err.println(pe);
}
}
}
/**
* Método necessário quando a interface Printable é implementada.
*/
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex == 0) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g2d.setColor(Color.black);
/*
* Imprime o texto passado, na coluna 10 e na linha 5
* da página a ser impressa
*/
g2d.drawString(text, 10, 10);
return Printable.PAGE_EXISTS;
} else {
return Printable.NO_SUCH_PAGE;
}
}
private String text = "";
}
Mas o que eu realmente queria era imprimir uma tabela com bordas e talz com os dados que estão na tela no momento.
Se alguém tiver alguma sugestão eu agradeço!
Espero a resposta! vlw!
