我正在使用netbeans,我有代码打印jpanel,它工作正常。但是,它的输出是它将jpanel打印为图像。这对我来说并不理想,因为它还在背景中打印出褪色的灰色,这是jpanel的大小。我只想在包含许多jlabel的jpanel中打印文本。有没有办法将jpanel的内容打印为文本而不是图像?
这是我用来打印jpanel
内容的代码 PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("jPanel13");
job.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());
jPanel13.paint(g2);
return Printable.PAGE_EXISTS;
}
});
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
} catch (PrinterException ex) {
}
这是我需要打印的jpanel的打印屏幕。在我的程序中,jlabels的文本值可以由用户更改。然后将打印jlabels文本以填写表格中的空白行。表格上已有写作;打印时我只会填充空白行。这就是为什么jlabels以这种方式定位的重要原因。
http://i.stack.imgur.com/kPKWe.jpg
答案 0 :(得分:3)
如果JPanel
背景是唯一的问题,您可以在其上调用print()
而不是paint()
,并覆盖printComponent()
不执行任何操作(默认只调用{ {1}})。
或者,只需在打印时将背景颜色设置为白色。