//import the packages for using the classes in them into the program
import java.awt.*;
import java.awt.print.*;
import javax.swing.*;
/**
*A class for creating a printer option.
*/
public class Print implements Printable {
private Component componentToBePrinted;
public static void printComponent( Component c ) {
new Print( c ).print();
}
public Print( Component componentToBePrinted ){
this.componentToBePrinted = componentToBePrinted;
}
public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable( this );
if( printJob.printDialog() ) {
try {
printJob.print();
}
catch( PrinterException pe ) {
System.out.println( "Error printing: " + pe );
}
}
}
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() );
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 );
}
}