Den komponent du vil printe skal du registrere med: Component c = ...; ComponentPrinter.makePrintable( c ); så kan du trykke control-p når komponenten er aktiv. Koden til ComponentPrinter er herunder. import java.awt.*; import java.awt.event.*; import java.awt.print.*; public class ComponentPrinter implements Printable { private Component c; /** * Constructor for class ComponentPrinter that * takes a Component as an argument. * @param c Component that we wish to print. **/ public ComponentPrinter( Component c ) { this.c = c; } // constructor
/** * The method print sets up the PrinterJob. **/ public void print() throws PrinterException { PrinterJob job = PrinterJob.getPrinterJob(); PageFormat format = job.pageDialog( job.defaultPage() ); job.setPrintable( this, format ); if ( job.printDialog() ) job.print(); } // print
/** * The method print is called by PrinterJob. **/ public int print( Graphics g, PageFormat format, int pagenum ) { if ( pagenum > 0 ) return Printable.NO_SUCH_PAGE; Graphics2D g2 = (Graphics2D)g; g2.translate( format.getImageableX(), format.getImageableY() ); c.paint( g2 ); return Printable.PAGE_EXISTS; } // print
/** * The static method makePrintable registers a key listener on * the component, and when the user presses ctrl-p key the * contents can be printed directly on a printer. **/ public static void makePrintable( final Component c ) { c.addKeyListener( new KeyAdapter() { public void keyPressed( KeyEvent e ) { if ( e.getKeyCode() == KeyEvent.VK_P && e.isControlDown() ) { ComponentPrinter printer = new ComponentPrinter( c ); try { printer.print(); } // try catch ( PrinterException pe ) { } // catch } // if } // keyPressed } // KeyAdapter ); } // makePrintable
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.