import java.awt.*; 
import java.awt.event.*; 

public class PrintGraphics extends Frame implements ActionListener { 
	PrintCanvas canvas1; 
	public PrintGraphics() { 
		super("PrintGraphics"); 
		canvas1 = new PrintCanvas(); 
		add("Center", canvas1); 
		Button b = new Button( "Print"); 
		b.setActionCommand("print"); 
		b.addActionListener(this); 
		add("South",b); 
		pack(); 
	}
	public void actionPerformed(ActionEvent e) { 
		String cmd = e.getActionCommand(); 
		if (cmd.equals("print")) { 
			PrintJob pjob = getToolkit().getPrintJob(this, "PrintGraphics", null); 
			if (pjob != null) { 
				Graphics pg = pjob.getGraphics(); 
				if (pg != null) { 
					canvas1.printAll(pg); 
					pg.dispose(); 
				}
				pjob.end(); 
			}
		}
	}
	public static void main(String args[]) { 
		PrintGraphics test = new PrintGraphics(); 
		test.addWindowListener(new WindowCloser()); 
		test.show(); 
	}
} //class PrintGraphics 

class PrintCanvas extends Canvas { 
	public Dimension getPreferredSize() {
		return new Dimension(200,200); 
	}
	public void paint(Graphics g) { 
		Rectangle r = getBounds(); 
		g.setColor(Color.white); 
		g.fillRect(0,0, r.width, r.height); 
		g.drawString("Hello, World", 100, 100); 
		g.setColor(Color.red); 
		g.drawLine(0,100,100,0); 
		g.fillOval(135,140,15,15); 
		g.setColor(Color.black);
		g.drawRect(30, 30, 30, 0);
		g.drawLine(15, 15, 35, 35);
		int[] a = {25, 45};
		int[] b = {25, 15};
		g.drawPolygon(a, b, 2);
	}
} //class PrintCanvas 

class WindowCloser extends WindowAdapter { 
	public void windowClosing(WindowEvent e) { 
		Window win = e.getWindow(); 
		win.setVisible(false); 
		win.dispose(); 
		System.exit(0); 
	}
} //class WindowCloser 
