import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;

public class MouseSpy implements MouseListener {
    
    public void mousePressed(MouseEvent e) {
        System.out.println("Mouse pressed at (" + e.getX() + 
			   ", " + e.getY() + ")");
    }
    
    public void mouseReleased(MouseEvent e) {
        System.out.println("Mouse released at (" + e.getX() +
                           ", " + e.getY() + ")");
    }
    
    public void mouseClicked(MouseEvent e) {
        System.out.println("Mouse clicked at (" + e.getX() +
                           ", " + e.getY() + ")");
    }
    
    public void mouseEntered(MouseEvent e) {
        System.out.println("Mouse entered at (" + e.getX() +
                           ", " + e.getY() + ")");
    }
    
    public void mouseExited(MouseEvent e) {
        System.out.println("Mouse exited at (" + e.getX() +
                           ", " + e.getY() + ")");
    }
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        MouseSpy listener = new MouseSpy();
        frame.addMouseListener(listener);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel label = new JLabel("Hello world");
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(300, 300));
        panel.add(label);
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

