Hallo,
ich habe folgendes Problem:
Ich habe eine Tabelle in einem ScrollPane und möchte diese Drucken.
Um alle Daten auch über mehrere Seiten zu drucken, vergrößere ich einfach das Fenster und das ScrollPane direkt vor dem Druck, so dass auch kein ScrollBar mehr zu sehen ist.
Unverständlich für mich ist, dass, wenn ich diese Anpassung über einen Button unabhängig von dem Druck ausführe, funktioniert es; setze ich es aber direkt in die Druckmethode ein, geht es nicht. Scheinbar aktualisiert er die Grafik nicht mehr vorher, denn nach dem "falschen" Druck liegt das gewünschte Layout vor.
<PRE>
void jBtnPrint_actionPerformed(ActionEvent e) {
Book book = new Book();
PageFormat format = new PageFormat();
Paper paper = new Paper();
try {
setPrintSettings(); // setzt Layoutanpassung
PrinterJob printJob = PrinterJob.getPrinterJob();
// Seite einrichten
paper.setSize(set.A4_BREITE, set.A4_HOEHE);
paper.setImageableArea(set.toPoints(10.0), set.toPoints(10.0),
set.A4_BREITE - 2 * set.toPoints(10),
set.A4_HOEHE - 2 * set.toPoints(10));
format.setOrientation(PageFormat.LANDSCAPE);
format.setPaper(paper);
format = printJob.pageDialog(format);
System.out.println("paper: "+(paper.getImageableHeight()-paper.getImageableY())+" ; panel: "+jPnlMain.getHeight());
System.out.println("Anzahl Seiten:"+jPnlMain.getCountPages(paper.getImageable Width()-paper.getImageableX(), jPnlMain.getHeight()));
for (int i = 0;
i < jPnlMain.getCountPages(paper.getImageableWidth()-paper.getImageableX(), jPnlMain.getHeight());
++i) {
book.append(jPnlMain, format);
}
printJob.setPageable(book);
// drucken
if (printJob.printDialog())
try {
printJob.print();
}
catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}
finally {
resetPrintSettings(); // setzt Layout urück
}
}
</PRE>
ich habe folgendes Problem:
Ich habe eine Tabelle in einem ScrollPane und möchte diese Drucken.
Um alle Daten auch über mehrere Seiten zu drucken, vergrößere ich einfach das Fenster und das ScrollPane direkt vor dem Druck, so dass auch kein ScrollBar mehr zu sehen ist.
Unverständlich für mich ist, dass, wenn ich diese Anpassung über einen Button unabhängig von dem Druck ausführe, funktioniert es; setze ich es aber direkt in die Druckmethode ein, geht es nicht. Scheinbar aktualisiert er die Grafik nicht mehr vorher, denn nach dem "falschen" Druck liegt das gewünschte Layout vor.
<PRE>
void jBtnPrint_actionPerformed(ActionEvent e) {
Book book = new Book();
PageFormat format = new PageFormat();
Paper paper = new Paper();
try {
setPrintSettings(); // setzt Layoutanpassung
PrinterJob printJob = PrinterJob.getPrinterJob();
// Seite einrichten
paper.setSize(set.A4_BREITE, set.A4_HOEHE);
paper.setImageableArea(set.toPoints(10.0), set.toPoints(10.0),
set.A4_BREITE - 2 * set.toPoints(10),
set.A4_HOEHE - 2 * set.toPoints(10));
format.setOrientation(PageFormat.LANDSCAPE);
format.setPaper(paper);
format = printJob.pageDialog(format);
System.out.println("paper: "+(paper.getImageableHeight()-paper.getImageableY())+" ; panel: "+jPnlMain.getHeight());
System.out.println("Anzahl Seiten:"+jPnlMain.getCountPages(paper.getImageable Width()-paper.getImageableX(), jPnlMain.getHeight()));
for (int i = 0;
i < jPnlMain.getCountPages(paper.getImageableWidth()-paper.getImageableX(), jPnlMain.getHeight());
++i) {
book.append(jPnlMain, format);
}
printJob.setPageable(book);
if (printJob.printDialog())
try {
printJob.print();
}
catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}
finally {
resetPrintSettings(); // setzt Layout urück
}
}
</PRE>