Jeg har gjort følgende for at tilpasse papiret til det der skal printes ud.
PrinterJob printerJob = PrinterJob.getPrinterJob(); PageFormat p = printerJob.defaultPage(); Paper paper = p.getPaper(); paper.setImageableArea( 10,10, 575 , 821); p.setPaper( paper );
Så skal du bare sørge for at du kun tegner indenfor de punkter du har sat i setImageableArea.
Ok, der kommer noget kode senere, jeg skal lige klippe de centrale dele ud. Det er et projekt og der er temmelig meget kode ud over selve canvas\'et og print-delen.
public class TestCanvas extends Canvas implements Printable // MouseListener, MouseMotionListener { public final static int WIDTH = 880; public final static double baneHoejde = 143.3; public final static int HEIGHT = 455;
public TestCanvas() { repaint(); setSize(WIDTH, HEIGHT); setBackground(Color.white); }
/** The speed and quality of printing suffers dramatically if * any of the containers have double buffering turned on. * So this turns if off globally. * @see enableDoubleBuffering */ public static void disableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(false); }
/** Re-enables double buffering globally. */ public static void enableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(true); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.