Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa MouseListener và MouseMotionListener trong Java là gì?

Chúng tôi có thể triển khai MouseListener giao diện khi chuột ổn định trong khi xử lý sự kiện chuột trong khi chúng tôi có thể triển khai MouseMotionListener giao diện khi chuột đang chuyển động trong khi xử lý sự kiện chuột.

Trình nghe chuột

A MouseEvent bị đuổi khi chúng tôi nhấn , phát hành hoặc nhấp (nhấn sau đó thả) nút chuột (nút trái hoặc phải) tại đối tượng nguồn hoặc định vị con trỏ chuột tại (nhập) và đi (thoát) khỏi đối tượng nguồn.

A MouseListener interface khai báo năm phương thức trừu tượng sau đây

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 to provide an 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) { }
}

Đầu ra

Sự khác biệt giữa MouseListener và MouseMotionListener trong Java là gì?

MouseMotionListener

A MouseEvent cũng bị đuổi khi chúng tôi di chuyển kéo con trỏ chuột tại đối tượng nguồn. Nhưng chúng tôi cần sử dụng MouseMotionListener để xử lý việc di chuyển chuột và kéo chuột.

A MouseMotionListener interface khai báo hai phương thức trừu tượng sau đây

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() + "");
   }
   // Need to provide an 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() + "");
   }
   // Need to provide an empty body to compile
   @Override public void mouseDragged(MouseEvent evt) { }
}

Đầu ra

Sự khác biệt giữa MouseListener và MouseMotionListener trong Java là gì?