用 Java 创建鼠标监听器
在 Java 中,当鼠标在特定空间中移动时,MouseListener 类会收到通知。 本教程演示如何创建 MouseListener 接口。
用 Java 创建鼠标监听器
当状态发生变化时,MouseListener 会收到通知。 这种变化可以是单击、按下和释放鼠标,或者进入和退出特定的窗口区域。
MouseListener 是 Java.awt.event 包的一部分。
Java MouseListener 的逐步机制如下:
- 当我们点击或移动鼠标时,程序中的一个对象会帮助实现界面。
- 该对象已向侦听器注册。 这就是为什么通过按下、单击或移动鼠标来生成事件的原因。
- 生成事件时,它有助于调用其中一种方法。
- 在此调用后,鼠标事件将传递给该方法。
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();
}
}
输出:
上面的代码实现了上面描述的所有方法,这意味着窗口会知道鼠标何时进入、存在、按下、释放或单击。
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 中将十六进制转换为字符串
发布时间:2023/08/10 浏览次数:95 分类:Java
-
在Java中,我们可以使用 toHexString() 方法将普通字符串转换为十六进制字符串,但是要将十六进制字符串转换为普通字符串,我们需要将每个字符串字符从十六进制转换为字符。 本教程演示如何
Java 中的对齐文本
发布时间:2023/08/10 浏览次数:110 分类:Java
-
我们可以创建我们的类,它将扩展类 Java.text.Format 来对齐文本。 本教程演示如何在 Java 中对齐文本。Java 中的对齐文本
在 Java 中的 String.contains() 方法中使用正则表达式
发布时间:2023/08/10 浏览次数:125 分类:Java
-
本文将介绍如何在 Java 的 String.contains() 函数中使用正则表达式。String.contains() 函数扫描字符串中的特定字符序列。
使用 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提供了一种数据库连接标准的语言,您可以编写数据库访问所需的程序。