在JTable之前和之后附加要打印的文本

时间:2012-04-20 17:27:09

标签: java swing printing jtable graphics2d

我正在尝试打印JTable,而print()方法效果很好,直到我遇到这种情况。让我说我想打印之前,只在第一页(不是标题)文本“报告”,最后文本“这是报告的结束”。我想再一次澄清我不需要页眉或页脚,只有当我打印它们时,这个文本出现在最后一页的第一页和最后一页的顶部。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

执行此操作的一种方法是将append()一系列合适的Printable个实例添加到java.awt.print.Book,如图here所示。

附录: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;
    }
}