2012-04-20 30 views
5

Tôi đang cố gắng in một JTable và phương pháp print() hoạt động tốt cho đến khi tôi đến kịch bản này. Cho phép nói rằng tôi muốn in trước, trong trang đầu tiên chỉ (không phải tiêu đề) văn bản "Báo cáo" và vào cuối văn bản "Đây là kết thúc báo cáo". Tôi muốn một lần nữa để làm rõ rằng tôi không cần đầu trang hoặc chân trang chỉ văn bản này xuất hiện ở đầu trang đầu tiên và cuối trang cuối cùng khi tôi in chúng.Nối văn bản để in trước và sau JTable

Tôi làm cách nào để thực hiện việc này?

+0

Không thể. Actuall công bố! – Vagelism

+0

ok. Tôi nghĩ rằng nó đã bị xóa! Cảm ơn bạn! – Vagelism

Trả lời

4

Một cách để thực hiện việc này là append() một loạt các trường hợp Printable phù hợp với java.awt.print.Book, như được hiển thị here.

Hợp đồng bổ sung: JTable có phương thức getPrintable() đơn giản hóa mọi thứ; đây là một phác thảo và tiêu đề đơn giản 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; 
    } 
} 
+0

Cảm ơn bạn nhưng dường như vẫn còn nâng cao cho kỹ năng của tôi !!! Dường như chỉ phức tạp khi in 2 dòng. Đây có phải là cách nó phải là? Một cái gì đó đơn giản hơn? – Vagelism

+1

Tôi đã xây dựng ở trên; bạn có thể phải thử nghiệm một chút bằng cách sử dụng bản xem trước bản in của nền tảng của bạn. – trashgod