Pessoal seguinte, eu montei uma especie de recibo no painel do Jframe, agora quero imprimir esse painel, é possível? ele tem método painel.print mas não funcionou alguém pode me ajudar? a jtable funcinou perfeitamente!
O seguinte método imprime qualquer objeto Component:
[code]public void printComponenet(){
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Print Component ");
pj.setPrintable (new Printable() {
public int print(Graphics pg, PageFormat pf, int pageNum){
if (pageNum > 0){
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
component_name.paint(g2); // o JPanel aqui
return Printable.PAGE_EXISTS;
}
});
if (pj.printDialog() == false)
return;
try {
pj.print();
} catch (PrinterException ex) {
// handle exception
}
}[/code]
Fonte: stackOverflow
Uma coisa que perturba a todos que pensam em imprimir um recibo (ou qualquer coisa) usando um JFrame é que ele fica horrível na impressora. Não tem como evitar isso, infelizmente, já que você está simplesmente tentando imprimir algo, na impressora, que está em resolução bem baixa na tela. Por exemplo, um JFrame maximizado costuma ter no máximo 1920 x 1024 pixels (quando você tem o luxo de ter um monitor “full HD”). Mas a impressora pede pelo menos 7200 por 5400 pixels…
no liro desenvolva aplicativos com java 6 da editora erica, tem boas dicas sobre imprimir jpanel.
e está para downloads na internet no site da editora.
talvez perguntem algo sobre uma página do livro.
se precisar de ajuda para isso, talvez eu possa ajudar.
com os exemplos vc consegue resolver seu problema.