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 void mouseClicked(MouseEvent e) このメソッドは、マウスをクリックする (押して離す) ときに呼び出されます。
2 void mouseEntered(MouseEvent e) このメソッドは、マウスが移動してコンポーネントに入ると呼び出されます。
3 void mouseExited(MouseEvent e) このメソッドは、マウスが移動されてコンポーネントから出ると呼び出されます。
4 void mousePressed(MouseEvent e) このメソッドは、コンポーネント上でのみマウス ボタンが押されたときに呼び出されます。
5 void 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 swing で使用されます。

たとえば、クリック位置の 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

上記のコードは、特定の領域のクリック位置の x および y ポイントを取得します。 コードは 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