用于接收元件上“感興趣”的滑鼠事件(按下、釋放、單擊、進入或離開)的 偵聽器接口。 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