Triển khai MouseListener khi chuột yên tĩnh khi xử lý sự kiện chuột, triển khai MouseMotionListener khi chuột đang di chuyển khi xử lý sự kiện chuột.
Mouse Listener
MouseEvent kích hoạt khi nhấn, thả hoặc click (nhấn rồi thả) nút chuột (trái/phải) tại object nguồn hoặc đưa con trỏ vào (enter) và ra (exit) khỏi object nguồn.
Giao diện MouseListener khai báo 5 phương thức trừu tượng:
Cú pháp
public void mouseClicked(MouseEvent evt) public void mousePressed(MouseEvent evt) public void mouseReleased(MouseEvent evt) public void mouseEntered(MouseEvent evt) public void mouseExited(MouseEvent evt)
Ví dụ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseListenerTest extends JFrame implements MouseListener {
private JTextField tfMouseX, tfMouseY;
public MouseListenerTest() {
setLayout(new FlowLayout());
add(new Label("X-Click: "));
tfMouseX = new JTextField(10);
tfMouseX.setEditable(false);
add(tfMouseX);
add(new Label("Y-Click: "));
tfMouseY = new JTextField(10);
tfMouseY.setEditable(false);
add(tfMouseY);
addMouseListener(this);
setTitle("MouseListener Test");
setLocationRelativeTo(null);
setSize(350, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MouseListenerTest();
}
@Override
public void mouseClicked(MouseEvent evt) {
tfMouseX.setText(evt.getX() + "");
tfMouseY.setText(evt.getY() + "");
}
// Need empty body to compile
@Override public void mousePressed(MouseEvent evt) {}
@Override public void mouseReleased(MouseEvent evt) {}
@Override public void mouseEntered(MouseEvent evt) {}
@Override public void mouseExited(MouseEvent evt) {}
}
Kết quả

MouseMotionListener
MouseEvent cũng kích hoạt khi di chuyển và kéo thả con trỏ chuột tại object nguồn. Cần MouseMotionListener để xử lý mouse-move và mouse-drag.
MouseMotionListener khai báo 2 phương thức trừu tượng:
Cú pháp
public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e)
Ví dụ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseMotionListenerTest extends JFrame implements MouseListener, MouseMotionListener {
private JTextField tfMouseClickX, tfMouseClickY;
private JTextField tfMousePositionX, tfMousePositionY;
public MouseMotionListenerTest() {
setLayout(new FlowLayout());
add(new Label("X-Click: "));
tfMouseClickX = new JTextField(10);
tfMouseClickX.setEditable(false);
add(tfMouseClickX);
add(new Label("Y-Click: "));
tfMouseClickY = new JTextField(10);
tfMouseClickY.setEditable(false);
add(tfMouseClickY);
add(new JLabel("X-Position: "));
tfMousePositionX = new JTextField(10);
tfMousePositionX.setEditable(false);
add(tfMousePositionX);
add(new JLabel("Y-Position: "));
tfMousePositionY = new JTextField(10);
tfMousePositionY.setEditable(false);
add(tfMousePositionY);
addMouseListener(this);
addMouseMotionListener(this);
setTitle("MouseMotionListener Test");
setSize(400, 120);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MouseMotionListenerTest();
}
@Override
public void mouseClicked(MouseEvent evt) {
tfMouseClickX.setText(evt.getX() + "");
tfMouseClickY.setText(evt.getY() + "");
}
// Empty body for compilation
@Override public void mousePressed(MouseEvent evt) {}
@Override public void mouseReleased(MouseEvent evt) {}
@Override public void mouseEntered(MouseEvent evt) {}
@Override public void mouseExited(MouseEvent evt) {}
@Override
public void mouseMoved(MouseEvent evt) {
tfMousePositionX.setText(evt.getX() + "");
tfMousePositionY.setText(evt.getY() + "");
}
// Empty body to compile
@Override public void mouseDragged(MouseEvent evt) {}
}
Kết quả
