public class Printer implements Printable { private JPanel p; private PrinterJob pj; private PageFormat pf; //Übergabe des JPanels, dessen Inhalt gedruckt werden soll public Printer(JPanel p) { this.p = p; this.pj = PrinterJob.getPrinterJob(); } //Seite einrichten public boolean setPage() { PageFormat pfDefault = pj.defaultPage(); this.pf = pj.pageDialog(pfDefault); return pf != pfDefault; } //Drucker auswählen public boolean setPrinter() { return pj.printDialog(); } //drucken public void print() throws PrinterException { Book book = new Book(); book.append(this, pf); pj.setPageable(book); pj.print(); } //wird automatisch aufgerufen public int print(Graphics g, PageFormat pf, int page) throws PrinterException { Graphics2D g2 = (Graphics2D)g; g2.drawString("Hallo", 50, 50); //funktioniert this.p.print(g2); //soll eigentlich den Inhalt des JPanels drucken g2.dispose(); return Printable.PAGE_EXISTS; } }