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 32 33 34 35 36 37 38
| public class MyPrintable implements Printable {
private JTextArea area;
private boolean layoutDone = false;
private int pageNumber = -1;
private Dimension pageSize;
[...]
/** {@inheritDoc}
*/
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {
if (!layoutDone) {
// Calculer le nombre de page et les dimensions de chaque page/vue sur le composant en fonction du pageFormat et des dimensions des zones imprimables.
pageNumber = ...
pageSize = ...
layoutDone = true;
}
if (pageIndex >= pageNumber) {
return NO_SUCH_PAGE;
}
Graphics g = graphics.create(pageFormat.getImageableX(), pageFormat.getImageableY(), pageFormat.getImageableWidth(), pageFormat.getImageableHeight());
try {
int x = 0;
int y = pageIndex*pageSize.height;
g.translate(x, -y);
// Seule la partie voulue sera dessinee.
area.print(g);
}
finally {
g.dispose();
}
return PAGE_EXISTS;
}
} |
Partager