import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;

public class Sourie extends JFrame{

    public Sourie() {

	// operation de fermeture
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
	// extraire les dimensions
	Toolkit kit=Toolkit.getDefaultToolkit();
	Dimension screenSize = kit.getScreenSize();

	// centrer l'image
	setSize(screenSize.width/2,screenSize.height/2);
	setLocation(screenSize.width/4,screenSize.height/4);
    
    // definir l'icone
	setTitle("Un titre");

    // ajouter le panneau au cadre
	add(new Panneau());
	setVisible(true);
    }

    class Panneau extends JPanel
    {
	String message = "";

	public Panneau()
	{
	    setBackground(Color.green);
	    setFocusable(true);
	    addMouseListener(new EcouteSourie());
	    addMouseMotionListener(new EcouteMouvement());
	    addKeyListener(new EcouteClavier());
	}
		
	public void paintComponent(Graphics g){
	    super.paintComponent(g);

	    Graphics2D g2=(Graphics2D) g;
	}
	

	class EcouteClavier implements KeyListener {
	    public void keyPressed(KeyEvent e) {
		System.out.println("PRESSED");
	    }
	    public void keyReleased(KeyEvent e) {
		System.out.println("RELEASED");
	    }
	    public void keyTyped(KeyEvent e) {
		System.out.println("TYPED");
	    }
	}

	class EcouteMouvement implements MouseMotionListener {
	    public void mouseDragged(MouseEvent e) {
		setBackground(Color.cyan);
		System.out.print("dragged:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());
	    }
	    public void mouseMoved(MouseEvent e) {
		setBackground(Color.lightGray);
		System.out.print("click:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());
	    }
	}

	class EcouteSourie implements MouseListener {
	    public void mouseClicked(MouseEvent e) {
		setBackground(Color.blue);
		System.out.print("click:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());
	    }
	    public void mouseEntered(MouseEvent e) {
		setBackground(Color.green);
		System.out.print("entre:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());	    }
	    public void mouseExited(MouseEvent e) {
		setBackground(Color.yellow);
		System.out.print("exit:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());	    }
	    public void mousePressed(MouseEvent e) {
		setBackground(Color.red);
		System.out.print("presse:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());
	    }
	    public void mouseReleased(MouseEvent e) {
		setBackground(Color.red);
		System.out.print("lache:");
		System.out.println(e.getClickCount() + ":" + e.getX() + ":" + e.getY());
	    }
	}
    }
    
    public static void main(String[] args){
	Sourie cadre = new Sourie();
    }
}
