Onderstaande code zorgt ervoor dat ik een willekeurig frame kan printen met al zijn componenten. Dit werkt goed voor frames zonder afbeeldingen. Nu heb ik echter ook een aantal frames met afbeeldingen (gifs) die moeten worden geprint. Dit gebeurt echter niet goed, ik zie alleen maar zwarte vlakken. Waar zit het probleem?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| public class PrintComponent implements Printable {
private Component componentToBePrinted;
private double scaleX = 0.5;
private double scaleY = 0.5;
.....
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g2d.scale(scaleX, scaleY);
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}
public static void disableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}
public static void enableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
} |