迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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。

上一篇:在 Java 中将十六进制转换为字符串

下一篇:没有了

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

本文地址:

相关文章

在 Java 中将十六进制转换为字符串

发布时间:2023/08/10 浏览次数:95 分类:Java

在Java中,我们可以使用 toHexString() 方法将普通字符串转换为十六进制字符串,但是要将十六进制字符串转换为普通字符串,我们需要将每个字符串字符从十六进制转换为字符。 本教程演示如何

用Java计算闰年

发布时间:2023/08/10 浏览次数:111 分类:Java

每四 (4) 年,日历中就会添加一个闰年,即 2 月 29 日这一天。 在今天的教程中,我们将学习如何使用 Java 计算闰年。使用 Java 计算闰年

Java 中的对齐文本

发布时间:2023/08/10 浏览次数:110 分类:Java

我们可以创建我们的类,它将扩展类 Java.text.Format 来对齐文本。 本教程演示如何在 Java 中对齐文本。Java 中的对齐文本

使用 Java 创建 REST 客户端

发布时间:2023/08/10 浏览次数:129 分类:Java

本文将介绍创建 REST 客户端的不同工具。 第一个示例演示了使用 Spring Boot 和 OkHttp 创建简单 REST 客户端的步骤。使用 Spring Boot 创建 Java Rest 客户端的步骤 要创建 REST 客户端,IDE 需要一个框架才

使用 Java 创建 HTTPS 服务器

发布时间:2023/08/10 浏览次数:126 分类:Java

本文介绍如何使用 Java 创建简单的 HTTPS 服务器。使用 Java 创建 HTTPS 服务器 在用JAVA创建HTTPS服务器之前,我们必须确保已经生成了服务器将使用的Keystore和Truststore。

Java 中的 AES 256

发布时间:2023/08/10 浏览次数:83 分类:Java

AES 256 是一种加密和解密算法。 本教程演示如何在 Java 中实现 AES 256 来加密和解密数据。Java 中的 AES 256 AES 是一种对称加密算法,易于在软件、硬件和受限环境中实现。

在JDBC中建立连接池

发布时间:2023/08/10 浏览次数:55 分类:Java

JDBC 是 Sun Microsystems 的一项规范,它为 Java 应用程序提供 API 以执行不同的操作,例如对各种数据库进行读取和写入。 JDBC提供了一种数据库连接标准的语言,您可以编写数据库访问所需的程序。

Java 绘画组件

发布时间:2023/08/10 浏览次数:105 分类:Java

首先,我们将回顾一下 Java PaintComponent() 方法的工作原理。 它什么时候调用,它的子系统和类的结构是什么?最后,我们将向您展示如何使用此方法在屏幕上绘制图形。 继续阅读以了解更多信

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便