迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

用 Java 创建鼠标监听器

作者:迹忆客 最近更新:2023/08/10 浏览次数:

在 Java 中,当鼠标在特定空间中移动时,MouseListener 类会收到通知。 本教程演示如何创建 MouseListener 接口。


用 Java 创建鼠标监听器

当状态发生变化时,MouseListener 会收到通知。 这种变化可以是单击、按下和释放鼠标,或者进入和退出特定的窗口区域。

MouseListener 是 Java.awt.event 包的一部分。

Java MouseListener 的逐步机制如下:

  1. 当我们点击或移动鼠标时,程序中的一个对象会帮助实现界面。
  2. 该对象已向侦听器注册。 这就是为什么通过按下、单击或移动鼠标来生成事件的原因。
  3. 生成事件时,它有助于调用其中一种方法。
  4. 在此调用后,鼠标事件将传递给该方法。

MouseListener 有多种在不同事件上调用的方法。 这些方法在表中给出。

序号 方法 说明
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 jiyik;

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();
    }
}

输出:

Mouse

上面的代码实现了上面描述的所有方法,这意味着窗口会知道鼠标何时进入、存在、按下、释放或单击。

MouseListener 通常与 Java swing 一起使用来创建界面。

例如,我们需要获取点击位置的X和Y点。 我们可以通过结合 MouseListener 和 Swing 来实现。

让我们来实现这个例子。

package jiyik;

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

上面的代码将获取特定区域上点击位置的 x 和 y 点。 该代码使用 Java Swing 和 MouseListener。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便