首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

12.6事件处理

例如,在用户界面上有一个按钮,当用户将鼠标移动到按钮上并单击时,就触发了一个“按钮单击”事件,然后由该命令按钮中的代码来完成相应的操作。因此,事件处理技术是用户界面程序设计中一项重要的技术。...事件:当用户在界面上执行一个操作,如按下键盘、单击或移动鼠标对窗口中的组件进行交互时所发生的事情。事件可以由外部用户操作触发,如单击按钮、单击鼠标等。事件也可以由操作系统触发,如时钟计数器等。...可以说事件源和监听器之间是“多对多”的关系,一个事件源可以有多个监听器,一个监听器也可以响应多个事件源。 Java中的事件处理模型的具体实现步骤如下。 定义事件源。...ActionEvent事件类,实际上,在java.awt.event和javax.swing.event包中还定义了很多其他事件类,例如ItemEvent、MouseEvent和KeyEvent等。...一般情况下,ActionEvent使用情况是单击按钮、选择一个项目、文本框按下回车等;ItemEvent使用情况是具有多个选项的组件上,如JCheckBox、JComboBox等;WindowEvent

13110

【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 )

一、Canvas 中绘制超大图片要点 ---- 1、设置 JFrame 窗口自动关闭 创建 JFrame 窗口后 , 通过调用 JFrame#setDefaultCloseOperation 可以设置窗口自动关闭...关闭窗口并退出应用 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 2、获取并绘制图片 在 AWT 中 , 使用 Toolkit.getDefaultToolkit...().getImage 函数 , 获取 Image 图片对象 ; // 获取图片 Image image = Toolkit.getDefaultToolkit().getImage...() { public void mousePressed(MouseEvent e) { // 记录鼠标按下时的坐标...( startX , startY ) 位置 的差值 , 将 该差值累加到 ( startX , startY ) 坐标中 ; 计算一个 Canvas 的画布偏移量 ( offsetX , offsetY

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    设计模式之——享元模式 Flyweight

    设想一下在选课高峰期,1 秒钟有 1000 人选课,程序在内存中同时创建 1000 个对象,服务器压力过大肯定卡啊,还有可能出现 内存溢出 的现象。...享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 定义 享元模式的定义提出了两个要求,细粒度 和 共享对象 。...内部状态指对象共享出来的信息,存储在享元信息内部,并且不会随环境的改变而改变,如本例中的任课老师和课程名称; 外部状态指对象得以依赖的一个标记,随环境的改变而改变,不可共享,如本例中的学生姓名。 ?...(String type) 方法; 客户类(Chessboard)利用 Graphics 组件在框架窗体中绘制一个棋盘,并实现 mouseClicked(MouseEvent e) 事件处理方法,该方法根据用户的选择从享元工厂中获取白子或者黑子并落在棋盘上...扩展 在前面介绍的享元模式中,其结构图通常包含可以共享的部分和不可以共享的部分。 在实际使用过程中,有时候会稍加改变,即存在两种特殊的享元模式:单纯享元模式 和 复合享元模式。

    41110

    【干货】20K以上的高薪Java必掌握的基础知识点(二)

    93、javax.swing包中的 JFrame 类或子类所创建的一个对象就是一个窗口。...97、Java中JFrame类的 setTitle 方法是用来设置窗口的名字。 98、JFrame类创建的对象是一个窗口容器,它默认布局是 BorderLayout 布局。...104、GridLayout 是使用较多的布局编辑器,其基本布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。...108、Java中能够产生事件的对象都可以成为事件源 ,如文本框、按钮、键盘等。 109、Java中事件源发生事件时,监视器 就自动调用执行被类实现的某个接口方法。...116、鼠标事件类MouseEvent中的方法getSource()是获取发生鼠标事件的事件源 。

    1.5K71

    【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

    , 调用 addMouseWheelListener 函数 , 添加 鼠标滚轮监听器 MouseWheelListener , 实现该监听器中的 void mouseWheelMoved(MouseWheelEvent...e) 函数 , 当鼠标滚轮滑动时 , 通过 MouseWheelEvent 对象 , 获取鼠标滚轮的滑动方向 , 向上滑动时 , 放大画布 , 画布增加 10% ; 向下滑动时 , 缩小画布 , 画布缩小...( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 , 这里在上述基础上 ,...g2.scale(scale, scale); // 拖动画布 g2.translate(offsetX, offsetY); // 获取图片...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用

    2.3K30

    Java项目实战之天天酷跑

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 ? 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。 ?

    2.5K20

    太完整了!三万字Java项目实战之天天酷跑

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 ? 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。 ?

    1.8K21

    不敢相信,居然用Java写了个“天天酷跑”!

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能  5、结束界面  获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。 ...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。...,功能如下: 跑酷距离、获取玩家的得分。 ...通过在Person类中添加get、set方法,获取数据。 二、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。

    1.6K30

    【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程的应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效的 ; 下面是设置键盘监听的核心代码...( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 ; 在 【Java AWT...图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客中 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时 , 拖动的效果也随之缩放..., 如 缩小画布后 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布中绘制的背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener...| Canvas 中绘制图像并设置图像大小 ) 博客中 , 使用缩放背景图像的方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客中实现的案例 , 在上面的基础上 , 添加了鼠标滚轮缩放的中心点设置为当前鼠标中心点

    1.8K20

    大佬带路,用Java实现天天酷跑(附源码),网友:这也太TM屌了~

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 ? 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。 ?

    1.5K20

    Java项目实战之天天酷跑

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 ? 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。 ?

    2.5K20

    用Java实现天天酷跑(附源码),这个真的有点强了!

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 ? ?...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 ? 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。 ?

    2.3K30

    【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    一、鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面中的 Canvas 画布某个位置 , Canvas 画布中绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , 在 Canvas 中绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布中的 x...记录的是鼠标指针指向的界面中 Camvas 画布中的坐标位置 ; pointer_ratio_x 和 pointer_ratio_y 记录的是 鼠标指针指向位置对应图片中坐标位置的比例 ; public...; 在鼠标滚轮事件 MouseWheelEvent 中 , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 在 Canvas 画布的坐标 ; 根据该 Canvas 中的坐标...在鼠标滚轮缩放完成后 , 再根据鼠标指针指向的位置和比例 , 结合图片缩放后的尺寸 , 重新计算画布偏移的位置 , 以达到鼠标指向的图片元素位置基本保持不变的目的 ; /** * 计算新的比例

    2.8K10

    如何用 JavaScript 模拟点击事件,简单实现 x, y 坐标点击?

    简单来说,x 和 y 坐标就是页面上的一个点的位置。x 代表水平方向,y 代表垂直方向。我们通过这两个数值可以准确地定位到页面上的某个点,然后在这个点上模拟一次点击,就像用户用鼠标点击一样。...这个方法会返回指定坐标上的元素,然后我们对这个元素调用 click 方法,就能模拟一次点击。...获取元素并点击:通过 document.elementFromPoint(x, y) 获取该点上的元素,并对其调用 click 方法来模拟点击。...获取元素并分发事件:和之前一样,通过 document.elementFromPoint(x, y) 获取元素,然后通过 dispatchEvent 方法分发这个点击事件。...小结 通过本文的讲解,我们了解了如何在 JavaScript 中通过 x, y 坐标来模拟点击事件。无论是直接调用 click 方法,还是使用 MouseEvent 构造函数,都能实现这一功能。

    2.1K10

    如果用java swing编写一个五子棋(人人对战)

    一.前言 刚学习java,上一次写了一个姓名随机抽取器,点击查看,参加了原力计划,被小编推荐到了首页,也是第一次在首页看到自己写的东西,当时看到的那一刻实实在在很开心,其实我们好多人学习东西,恰恰就需要那么一点点的鼓励和被重视...,所以我一直认为编写综合程序,对自己的技术有进一步的提示。...在上次写完随机抽取器,有人给我留言,说如果添加了抽取过程中可以显示动态名字就更好,后来我也认真想了想,俗话说,始于颜值,,,颜值即正义,于是在下手码代码前,我有了经验,我用PS认认真真的把我需要的资源都做好了...e) { } public void mouseClicked(MouseEvent e) { //获取鼠标单击事件 ,当鼠标单击时,获取坐标 if(boonum==true...每文一句:目标的坚定是性格中最必要的力量源泉之一,也是成功的利器之一。没有它,天才也会在矛盾无定的迷径中徒劳无功。

    1.3K51

    天天酷跑,如何用 Java 来实现?(附源码)

    、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、 暂停、继续功能、玩家的移动功能 5、结束界面 获取玩家的得分、跑酷距离。...阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。 等待:当线程等待其他线程通知调度表可以运行时。 计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。...以便在面板类中对其障碍物进行操作。 障碍物二:宠物 与其称之障碍物,不如说它是个跟着玩家的小跟班。 public class Barrs_2{ // 宠物!...,功能如下: 跑酷距离、获取玩家的得分。...通过在Person类中添加get、set方法,获取数据。 2、获取玩家的得分 玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。

    1.5K30
    领券