import javax.swing.SwingUtilities;
import java.awt.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;

public class CaptureTest extends Frame implements MouseListener, MouseMotionListener {
	
	Robot r = null;
	MyCanvas myc = new MyCanvas();
	
	BufferedImage bimg = null;
	
	public CaptureTest() {
		add("Center", myc);
		try {
			r = new Robot();
		} catch (Exception e) {
		}
		myc.addMouseListener(this);
		myc.addMouseMotionListener(this);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				((Dialog)we.getSource()).dispose();
			}
		});
		setSize(300, 300);
		setVisible(true);	
	}
	
	
	public static void main(String args[]) {
		CaptureTest test = new CaptureTest();
	}
	
	public void mouseMoved(MouseEvent me) {}
	
	public void mouseDragged(MouseEvent me) {
		Point pt = me.getPoint();
		SwingUtilities.convertPointToScreen(pt, myc);
		int x = pt.x;
		int y = pt.y;
		int width = 300;
		int height = 300;
		bimg = r.createScreenCapture(new Rectangle(x, y, width, height));
		myc.setImage(bimg);
		myc.repaint();
	}
	
	
	public void mousePressed(MouseEvent me) {
	}
	
	public void mouseReleased(MouseEvent me) {
	}
	
	public void mouseClicked(MouseEvent me) {
	}
	
	public void mouseEntered(MouseEvent me) {
	}
	
	public void mouseExited(MouseEvent me) {
	}
	
}

class MyCanvas extends Canvas {
	
	BufferedImage img = null;
	
	public MyCanvas() {
	}
	
	public void setImage(BufferedImage im) {
		img = im;
		if (img != null) {
			this.setSize(img.getWidth(), img.getHeight());
		}
	}
	
	public void paint(Graphics g) {
		if (img != null) {
			g.drawImage(img, 0, 0, null);
		}
	}
}

		