Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 MouseListener와 MouseMotionListener의 차이점은 무엇입니까?

<시간/>

MouseListener 를 구현할 수 있습니다. MouseMotionListener 를 구현할 수 있는 반면 마우스 이벤트를 처리하는 동안 마우스가 안정적인 경우 인터페이스 마우스 이벤트를 처리하는 동안 마우스가 움직일 때의 인터페이스입니다.

마우스 리스너

마우스 이벤트 누르면 실행됩니다. , 릴리스 또는 클릭 (누른 후 떼기) 소스 개체에서 마우스 버튼(왼쪽 또는 오른쪽 버튼)을 누르거나 마우스 포인터를 소스 개체에서(입력) 및 멀리(종료) 위치에 둡니다.

마우스 리스너 인터페이스는 다음 5가지 추상 메서드를 선언합니다.

구문

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

출력

Java에서 MouseListener와 MouseMotionListener의 차이점은 무엇입니까?

마우스 모션 리스너

마우스 이벤트 우리가 이동할 때도 해고됩니다. 및 드래그 소스 개체에 마우스 포인터를 놓습니다. 하지만 MouseMotionListener 를 사용해야 합니다. 마우스 이동 및 마우스 드래그를 처리합니다.

MouseMotionListener 인터페이스는 다음 두 가지 추상 메서드를 선언합니다.

구문

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

출력

Java에서 MouseListener와 MouseMotionListener의 차이점은 무엇입니까?