当前位置: 首页 > news >正文

Java快速上手之实验七

1.编写鼠标事件响应程序MouseEventDemo.java,当鼠标进入和离开窗口时给出相应显示,当按下、弹起时显示当前鼠标的坐标值。

2.编写鼠标事件响应程序MouseMotionEventDemo.java,当鼠标在窗口内移动时显示鼠标的坐标值。

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;public class MouseEventDemo {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("鼠标事件");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 400);frame.setLayout(new BorderLayout());// 创建显示区域JPanel panel = new JPanel();panel.setBackground(Color.GREEN);frame.add(panel, BorderLayout.CENTER);// 创建状态栏,用于显示鼠标事件信息JLabel statusLabel = new JLabel(" ");statusLabel.setHorizontalAlignment(SwingConstants.CENTER);frame.add(statusLabel, BorderLayout.SOUTH);// 添加鼠标监听器panel.addMouseListener(new MouseListener() {@Overridepublic void mouseClicked(MouseEvent e) {statusLabel.setText("鼠标左键单击 坐标(" + e.getX() + "," + e.getY() + ")");}@Overridepublic void mousePressed(MouseEvent e) {statusLabel.setText("鼠标按下 坐标(" + e.getX() + "," + e.getY() + ")");}@Overridepublic void mouseReleased(MouseEvent e) {statusLabel.setText("鼠标弹起 坐标(" + e.getX() + "," + e.getY() + ")");}@Overridepublic void mouseEntered(MouseEvent e) {statusLabel.setText("鼠标进入窗口");}@Overridepublic void mouseExited(MouseEvent e) {statusLabel.setText("鼠标离开窗口");}});// 设置窗口可见frame.setVisible(true);}
}2.
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;public class MouseMotionEventDemo {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("鼠标移动事件");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 400);frame.setLayout(new BorderLayout());// 创建显示区域JPanel panel = new JPanel();panel.setBackground(Color.YELLOW);// 创建状态栏,用于显示鼠标坐标JLabel statusLabel = new JLabel("鼠标移动事件");// 添加鼠标移动监听器panel.addMouseMotionListener(new MouseMotionListener() {@Overridepublic void mouseDragged(MouseEvent e) {// 不处理拖拽事件}@Overridepublic void mouseMoved(MouseEvent e) {// 更新状态栏显示鼠标坐标statusLabel.setText("鼠标移动, 坐标(" + e.getX() + "," + e.getY() + ")");}});// 将组件添加到窗口frame.add(panel, BorderLayout.CENTER);frame.add(statusLabel, BorderLayout.SOUTH);// 设置窗口可见frame.setVisible(true);}
}

http://www.xdnf.cn/news/393427.html

相关文章:

  • 2025-05-11 Unity 网络基础11——UnityWebRequest 使用
  • 【数据结构】前言
  • JVM内存结构有哪些?HashMap和HashTable的区别?
  • 编程技能:字符串函数02,strcpy
  • 解决SSH连接华为云服务器ESC经常性断连问题
  • 数据结构实验9.1:静态查找表的基本操作
  • C++:template(函数模板)
  • GitLab搭建与使用(SSH和Docker)两种方式
  • [学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
  • HTTP 错误状态码以及常用解决方案
  • C++进阶--使用红黑树封装map和set
  • 原型链与继承机制:继承背后的秘密
  • Baklib内容中台的核心架构是什么?
  • 蓝桥杯14届国赛 班级活动
  • 反向代理对于 网络安全中服务器的一些思考
  • MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
  • JS | 正则 · 常用正则表达式速查表
  • Go语言——kratos微服务框架使用
  • Google语法整理
  • 《软件项目管理》笔记二
  • 从 TTS 到 TTRL:无标签数据强化学习探索与展望
  • CMOS内存的地址空间在主内存空间中吗?
  • Java Solon-MCP 实现 MCP 实践全解析:SSE 与 STDIO 通信模式详解
  • 深入剖析卷积神经网络之卷积层:原理、类型与优化策略
  • Baklib内容管理平台的核心组成是什么?
  • SpringBoot 自动装配原理 自定义一个 starter
  • Android架构模式推荐及分析和MVC架构模式制作一个简单的底部tab切换
  • 嵌入式学习笔记 - STM32 ADC,多重转换,内部参考电压,
  • linux基础操作4------(权限管理)
  • 产业带数据采集方案:1688 API 接口开发与实时数据解析实践