我正在尝试打印 aJTable
并且该print()
方法效果很好,直到我遇到这种情况。假设我想在第一页(不是标题)之前打印文本“报告”,最后打印文本“这是报告的结尾”。我想再次澄清一下,当我打印它们时,我不需要页眉或页脚,仅此文本出现在第一页的顶部和最后一页的底部。
我怎样才能做到这一点?
我正在尝试打印 aJTable
并且该print()
方法效果很好,直到我遇到这种情况。假设我想在第一页(不是标题)之前打印文本“报告”,最后打印文本“这是报告的结尾”。我想再次澄清一下,当我打印它们时,我不需要页眉或页脚,仅此文本出现在第一页的顶部和最后一页的底部。
我怎样才能做到这一点?
做到这一点的一种方法是将append()
一系列合适的Printable
实例添加到 a中,如此处java.awt.print.Book
所示。
附录:JTable
有一个getPrintable()
可以简化事情的方法;这是一个大纲和简单的标题Printable
:
PrinterJob pj = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(new Title(), pj.defaultPage());
book.append(table.getPrintable(...), pj.defaultPage());
book.append(new EndPage(), pj.defaultPage());
pj.setPageable(book);
pj.print();
...
private static class Title implements Printable {
Font font = new Font("SansSerif", Font.PLAIN, 48);
@Override
public int print(Graphics g, PageFormat pf, int pageIndex)
throws PrinterException {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g2d.setFont(font);
g2d.setColor(Color.black);
g2d.drawString("Report", 50, 200);
return Printable.PAGE_EXISTS;
}
}