Java에서 마우스 리스너 만들기

Sheeraz Gul 2023년10월12일
Java에서 마우스 리스너 만들기

Java에서 MouseListener 클래스는 마우스가 특정 공간에서 움직일 때 알림을 받습니다. 이 튜토리얼은 MouseListener 인터페이스를 생성하는 방법을 보여줍니다.

Java에서 마우스 리스너 만들기

‘MouseListener’는 상태 변경이 있을 때 알림을 받습니다. 이 변경은 마우스를 클릭, 눌렀다 떼는 것 또는 특정 창 영역에 들어가고 나가는 것일 수 있습니다.

MouseListenerJava.awt.event 패키지의 일부입니다.

Java MouseListener의 단계별 메커니즘은 다음과 같습니다.

  1. 마우스를 클릭하거나 움직이면 프로그램의 개체가 인터페이스 구현을 도와줍니다.
  2. 해당 개체는 이미 수신기에 등록되어 있습니다. 그렇기 때문에 마우스를 누르거나 클릭하거나 이동하면 이벤트가 발생합니다.
  3. 이벤트가 생성되면 메소드 중 하나를 호출하는 데 도움이 됩니다.
  4. 이 호출 후에 Mouse 이벤트가 메서드로 전달됩니다.

MouseListener에는 다양한 이벤트에서 호출되는 여러 메서드가 있습니다. 이러한 방법은 표에 나와 있습니다.

S.No 방법 설명
1 무효 mouseClicked(MouseEvent e) 이 메서드는 마우스를 클릭할 때(눌렀다 떼면) 호출됩니다.
2 void mouseEntered(MouseEvent e) 이 메서드는 마우스가 이동되어 구성 요소에 들어갈 때 호출됩니다.
무효 mouseExited(MouseEvent e) 이 메서드는 마우스가 이동되어 구성 요소에서 나갈 때 호출됩니다.
4 무효 mousePressed(MouseEvent e) 이 메서드는 구성 요소에서만 마우스 버튼을 눌렀을 때 호출됩니다.
5 무효 mouseReleased(MouseEvent e) 이 메서드는 구성 요소에서 마우스 버튼을 놓을 때 호출됩니다.

이제 표에 설명된 모든 메서드를 호출하는 예제를 시도해 보겠습니다.

예:

package delftstack;

import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

// The main class implements the MouseListener interface
public class Mouse_Listener implements MouseListener {
  // create two labels one frame and one string
  Label label1, label2;
  Frame Demo_Frame;
  String event_invo;

  // Constructor
  Mouse_Listener() {
    Demo_Frame = new Frame("The Mouse Listener");
    label1 = new Label("This is demo for the mouse listener events\n", Label.CENTER);
    label2 = new Label();

    // set the frame layout as flowlayout
    Demo_Frame.setLayout(new FlowLayout());

    // add labels to the frame
    Demo_Frame.add(label1);
    Demo_Frame.add(label2);

    // Register the created class Mouse_Listener to catch as well as respond to the mouse events,
    Demo_Frame.addMouseListener(this);

    // set the size of frame 450x300
    Demo_Frame.setSize(450, 300);

    // visibility of the frame will be true
    Demo_Frame.setVisible(true);
  }
  // mouseClicked method
  public void mouseClicked(MouseEvent ev) {
    event_invo += "     The mouse button was clicked";
    // set the text of label 2 as even_invo
    label2.setText(event_invo);
    // visibility will be true
    Demo_Frame.setVisible(true);
  }
  // mouseEntered method
  public void mouseEntered(MouseEvent ev) {
    // when mouse enters the window
    label2.setText("The mouse has entered the window");
    // visibility will be true
    Demo_Frame.setVisible(true);
  }
  // mouseExited method
  public void mouseExited(MouseEvent ev) {
    // when the mouse leaves the window
    label2.setText("Mouse has left the window");
    // visibility as true
    Demo_Frame.setVisible(true);
  }
  // mousePressed method
  public void mousePressed(MouseEvent ev) {
    // when the mouse is pressed
    label2.setText("Mouse button is pressed");
    // set the visibility as true
    Demo_Frame.setVisible(true);
  }
  // mouseReleased method
  public void mouseReleased(MouseEvent ev) {
    // set the string event_invo
    event_invo = "The mouse button is released    ";
    label2.setText(event_invo);
    // visibility as true
    Demo_Frame.setVisible(true);
  }
  // main method
  public static void main(String args[]) {
    new Mouse_Listener();
  }
}

출력:

마우스

위의 코드는 위에서 설명한 모든 메서드를 구현합니다. 즉, 마우스가 들어오거나, 존재하거나, 누르거나, 놓거나, 클릭할 때 창에서 알 수 있습니다.

MouseListener는 일반적으로 인터페이스를 생성하기 위해 Java 스윙과 함께 사용됩니다.

예를 들어 클릭 위치의 XY 지점을 가져와야 합니다. MouseListenerSwing을 결합하여 이를 수행할 수 있습니다.

이 예제를 구현해 보겠습니다.

package delftstack;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Mouse_Listener {
  private JFrame Demo_Frame;
  private JLabel Label_One;
  private JLabel Label_Two;
  private JPanel Control_Panel;

  public Mouse_Listener() {
    Create_GUI();
  }
  public static void main(String[] args) {
    Mouse_Listener MouseListenerDemo = new Mouse_Listener();
    MouseListenerDemo.Show_Mouse_Listener();
  }
  private void Create_GUI() {
    Demo_Frame = new JFrame("Java SWING With MouseListener");
    Demo_Frame.setSize(400, 400);
    Demo_Frame.setLayout(new GridLayout(3, 3));

    Label_One = new JLabel("", JLabel.CENTER);
    Label_Two = new JLabel("", JLabel.CENTER);
    Label_Two.setSize(350, 350);

    Demo_Frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent windowEvent) {
        System.exit(0);
      }
    });
    Control_Panel = new JPanel();
    Control_Panel.setLayout(new FlowLayout());

    Demo_Frame.add(Label_One);
    Demo_Frame.add(Control_Panel);
    Demo_Frame.add(Label_Two);
    Demo_Frame.setVisible(true);
  }
  private void Show_Mouse_Listener() {
    Label_One.setText("X Y Points for MouseListener");

    JPanel Demo_Panel = new JPanel();
    Demo_Panel.setBackground(Color.green);
    Demo_Panel.setLayout(new FlowLayout());
    Demo_Panel.addMouseListener(new CustomMouseListener());

    JLabel Msg_Label = new JLabel("Welcome to Delftstack.com", JLabel.CENTER);
    Demo_Panel.add(Msg_Label);

    Msg_Label.addMouseListener(new CustomMouseListener());
    Demo_Panel.add(Msg_Label);

    Control_Panel.add(Demo_Panel);
    Demo_Frame.setVisible(true);
  }
  class CustomMouseListener implements MouseListener {
    public void mouseClicked(MouseEvent e) {
      Label_Two.setText("Mouse Clicked: (" + e.getX() + ", " + e.getY() + ")");
    }
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
  }
}

출력:

마우스 1

위의 코드는 특정 영역의 클릭 위치에 대한 xy 포인트를 가져옵니다. 이 코드는 Java SwingMouseListener를 사용합니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook