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

public class MouseEventDisplay extends JPanel implements 
    MouseListener, MouseMotionListener {
    int x = 0, y = 0;
    String text = "";
    
    public MouseEventDisplay() {
	setBackground(Color.white);
	setFont(new Font("sanserif", Font.BOLD, 12));
	addMouseListener(this);
	addMouseMotionListener(this);
    }

    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	g.drawString(text, x, y);
    }

    public void mouseClicked(MouseEvent me) {
	update("clicked", me.getX(), me.getY());
    }

    public void mouseEntered(MouseEvent me) {
	update("entered", me.getX(), me.getY());
    }

    public void mouseExited(MouseEvent me) {
	update("exited", me.getX(), me.getY());
    }

    public void mousePressed(MouseEvent me) {
	update("pressed", me.getX(), me.getY());
    }

    public void mouseReleased(MouseEvent me) {
	update("released", me.getX(), me.getY());
    }

    public void mouseDragged(MouseEvent me) {
	update("dragged", me.getX(), me.getY());
    }

    public void mouseMoved(MouseEvent me) {
	update("moved", me.getX(), me.getY());
    }

    public void update(String s, int x, int y) {
	this.x = x;  this.y = y; text = "Mouse " + s + " at " + x + ", " + y;
	repaint();
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("MouseEventDisplay");
	frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	MouseEventDisplay display = new MouseEventDisplay();
	display.setPreferredSize(new Dimension(300, 300));
        frame.getContentPane().add(display, BorderLayout.CENTER);

        frame.pack();
        frame.show();
    }
}

	

    
