用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的
侦听器接口。
public interface
MouseListenerextends EventListener
(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。) 旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。 然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法
public class Mouse extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JLabel label; public Mouse() { super("mouse"); Container container = getContentPane(); container.setLayout(new BorderLayout()); label = new JLabel(); container.add(label, BorderLayout.SOUTH); setSize(300, 300); setVisible(true); Handler1 handler1 = new Handler1(); Handler2 handler2 = new Handler2(); container.addMouseListener(handler1); container.addMouseMotionListener(handler2); } public class Handler1 implements MouseListener { public void mouseClicked(MouseEvent e) { label.setText("鼠标点击的坐标[" + e.getX() + "," + e.getY() + "]"); } public void mousePressed(MouseEvent e) { label.setText("鼠标经过的坐标[" + e.getX() + "," + e.getY() + "]"); } public void mouseReleased(MouseEvent e) { label.setText("鼠标释放的坐标[" + e.getX() + "," + e.getY() + "]"); } public void mouseEntered(MouseEvent e) { // JOptionPane.showMessageDialog(null, "鼠标进入窗口"); } public void mouseExited(MouseEvent e) { label.setText("鼠标在窗口之外"); } } public class Handler2 implements MouseMotionListener { public void mouseDragged(MouseEvent e) { label.setText("鼠标拖拽的坐标[" + e.getX() + "," + e.getY() + "]"); } public void mouseMoved(MouseEvent e) { label.setText("鼠标移动的坐标[" + e.getX() + "," + e.getY() + "]"); } } public static void main(String[] args) { Mouse g = new Mouse(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
源码地址:https://github.com/followwwind/javase