Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

MouseListener และ MouseMotionListener ใน Java แตกต่างกันอย่างไร


เราสามารถใช้ MouseListener ส่วนต่อประสานเมื่อเมาส์เสถียรในขณะที่จัดการเหตุการณ์ของเมาส์ในขณะที่เราสามารถใช้ MouseMotionListener อินเทอร์เฟซเมื่อเมาส์เคลื่อนที่ขณะจัดการกับเหตุการณ์ของเมาส์

ฟังเมาส์

MouseEvent จะถูกไล่ออกเมื่อเรากด , ปล่อย หรือ คลิก (กดตามด้วยการปล่อย) ปุ่มเมาส์ (ปุ่มซ้ายหรือขวา) ที่วัตถุต้นทางหรือวางตำแหน่งตัวชี้เมาส์ที่ (เข้า) และออก (ออก) จากวัตถุต้นทาง

MouseListener อินเทอร์เฟซประกาศห้าวิธีนามธรรมต่อไปนี้

ไวยากรณ์

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)

ตัวอย่าง

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) { }
}

ผลลัพธ์

MouseListener และ MouseMotionListener ใน Java แตกต่างกันอย่างไร

MouseMotionListener

MouseEvent ยังถูกไล่ออกเมื่อเรา เคลื่อนไหว และ ลาก ตัวชี้เมาส์ที่วัตถุต้นทาง แต่เราต้องใช้ MouseMotionListener เพื่อจัดการกับการเลื่อนเมาส์และการลากเมาส์

MotionListener อินเทอร์เฟซประกาศวิธีนามธรรมสองวิธีต่อไปนี้

ไวยากรณ์

public void mouseDragged(MouseEvent e)
public void mouseMoved(MouseEvent e)

ตัวอย่าง

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) { }
}

ผลลัพธ์

MouseListener และ MouseMotionListener ใน Java แตกต่างกันอย่างไร