2012-04-20 10 views
5

Sto tentando di stampare un JTable e il metodo print() funziona alla grande fino a quando non arrivo a questo scenario. Diciamo che voglio stampare prima, solo nella prima pagina (non nell'intestazione) il testo "Segnala" e alla fine nel testo "Questa è la fine del rapporto". Vorrei ancora una volta chiarire che non ho bisogno di un'intestazione o di un piè di pagina solo che questo testo appaia nella parte superiore della prima e della parte inferiore dell'ultima pagina quando li stampo.Aggiunta di testo per la stampa prima e dopo un JTable

Come posso fare questo?

+0

Non possibile. Actuall dublicate! – Vagelism

+0

ok. Penso che sia cancellato! Grazie! – Vagelism

risposta

4

Un modo per fare ciò è append() una serie di istanze Printable adatte a java.awt.print.Book, come mostrato here.

Addendum: JTable ha un metodo getPrintable() che dovrebbe semplificare le cose; ecco uno schema e un titolo semplice 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

Grazie ma sembra ancora avanzato per le mie capacità !!! Sembra complicato per la stampa di sole 2 linee. È così che deve essere? Qualcosa di più semplice? – Vagelism

+1

Ho elaborato sopra; potresti dover sperimentare un po 'usando l'anteprima di stampa della tua piattaforma. – trashgod

Problemi correlati