import java.awt.* ;
import java.awt.event.* ; 
import javax.swing.* ;
import javax.swing.event.* ;

class MaFenetre extends JFrame
{ 
	private JPanel paneau ;
	
	public MaFenetre ()
	{ 
		setTitle ("Essais drag souris") ; 
		setSize (300, 200) ;
		paneau = new Paneau() ;
		getContentPane().add(paneau) ;
	}

}

class Paneau extends JPanel implements MouseMotionListener
{ 
	private boolean enCours = false ;
	private int xDeb, yDeb, xFin, yFin ;
	
	Paneau()
	{ 	addMouseMotionListener(this) ;
		addMouseListener (new MouseAdapter()
		{ public void mouseReleased (MouseEvent e)
			{ 	enCours = false ;
				System.out.println ("Release "+e.getX() + " " + e.getY());
			}
		}) ;
		repaint() ;
	}
	
	public void mouseDragged (MouseEvent e)
	{ 
		System.out.println ("Drag "+e.getX() + " " + e.getY());
		if (!enCours) 
		{ xDeb = e.getX() ; 
		  yDeb = e.getY() ;
		  xFin = xDeb ; 
		  yFin = yDeb ;
		  enCours = true ;
		}
		else { xFin = e.getX() ; yFin = e.getY() ;
		}
		repaint() ;
	}
	public void mouseMoved (MouseEvent e) {}
	
	public void paintComponent (Graphics g)
	{ 	super.paintComponent(g) ;
	
		int xd, xf, yd, yf ;
		xd = Math.min (xDeb, xFin) ; xf = Math.max (xDeb, xFin) ;
		yd = Math.min (yDeb, yFin) ; yf = Math.max (yDeb, yFin) ;
		g.drawRect (xd, yd, xf-xd, yf-yd) ;
	}


}

public class Drag1
{ 
	public static void main (String args[])
	{ 	MaFenetre fen = new MaFenetre() ;
		fen.setVisible(true) ;
	}
}