6

私は印刷しようとしていますが、このシナリオに到達するまで、JTableこの方法はうまく機能します。print()前に、最初のページのみ (ヘッダーではなく) に「レポート」というテキストを印刷し、最後に「レポートの終わりです」というテキストを印刷したいとします。ヘッダーやフッターは必要ないことをもう一度明確にしたいと思います。このテキストは、印刷時に最後のページの最初と最後に表示されます。

これどうやってするの?

4

1 に答える 1

4

これを行う 1 つの方法は、ここに示すようにappend()、一連の適切なPrintableインスタンスを に作成することです。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;
    }
}
于 2012-04-20T18:26:56.357 に答える