Download PrintFrame.java source file
// I don't know remember where I found this demo, I think it was
// from Cay Horstman's "Core Java vol. 2".
// Adapted by Wayne Pollock, Tampa Florida USA.
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
public class PrintFrame extends JFrame implements Printable
{
public static void main ( String [] args )
{
PrintFrame pf = new PrintFrame();
pf.setVisible( true );
}
public PrintFrame()
{
super( "PrintFrame v1.0" );
// Create and lay out components:
JPanel panel = new JPanel();
JButton printButton = new JButton( "Print" );
panel.add( printButton );
panel.add( new JList(new Object[] { "One", "Two", "Three" }) );
panel.add( new JButton("Push me"));
panel.add( new JCheckBox("Chess", true));
panel.add( new JComboBox(new Object[] { "Eins", "Zwei", "Drei" }) );
setContentPane( panel );
setSize(400, 400);
// Center the Frame on the screen:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
int x = (screenSize.width - frameSize.width) / 2;
int y = (screenSize.height - frameSize.height) / 2;
setLocation( x, y );
// Hook up event handling:
printButton.addActionListener( new ActionListener() {
public void actionPerformed ( ActionEvent ae )
{
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable( PrintFrame.this );
if ( pj.printDialog() )
{
try { pj.print(); }
catch ( PrinterException pe )
{
System.out.println( pe );
}
}
}
});
setDefaultCloseOperation( EXIT_ON_CLOSE );
}
public int print ( Graphics gr, PageFormat pf, int pageIndex )
{
if (pageIndex != 0) // We know we only have one page to print
return NO_SUCH_PAGE;
Graphics2D g = (Graphics2D) gr;
// Translate the origin (0,0 point) to the upper left:
g.translate(pf.getImageableX(), pf.getImageableY());
getContentPane().paint( g ); // Let the component paint itself!
return PAGE_EXISTS;
}
}