步骤1:按钮监听步骤2:键盘监听步骤3:鼠标监听步骤4:适配器


示例 1 : 按钮监听
创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用

package gui;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestGUI {public static void main(String[] args) {JFrame f = new JFrame("LoL");f.setSize(400, 300);f.setLocation(580, 200);f.setLayout(null);final JLabel l = new JLabel();ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");l.setIcon(i);l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());JButton b = new JButton("隐藏图片");b.setBounds(150, 200, 100, 30);// 给按钮 增加 监听b.addActionListener(new ActionListener() {// 当按钮被点击时,就会触发 ActionEvent事件// actionPerformed 方法就会被执行public void actionPerformed(ActionEvent e) {l.setVisible(false);}});f.add(l);f.add(b);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}
}

示例 2 : 键盘监听
键盘监听器: KeyListener
keyPressed 代表 键被按下
keyReleased 代表 键被弹起
keyTyped 代表 一个按下弹起的组合动作
KeyEvent.getKeyCode() 可以获取当前点下了哪个键

package gui;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestGUI {public static void main(String[] args) {JFrame f = new JFrame("LoL");f.setSize(400, 300);f.setLocation(580, 200);f.setLayout(null);final JLabel l = new JLabel();ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");l.setIcon(i);l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());// 增加键盘监听f.addKeyListener(new KeyListener() {// 键被弹起public void keyReleased(KeyEvent e) {// 39代表按下了 “右键”if (e.getKeyCode() == 39) {// 图片向右移动 (y坐标不变,x坐标增加)l.setLocation(l.getX() + 10, l.getY());}}//键被按下public void keyPressed(KeyEvent e) {// TODO Auto-generated method stub}// 一个按下弹起的组合动作public void keyTyped(KeyEvent e) {}});f.add(l);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}
}

示例 3 : 鼠标监听
MouseListener 鼠标监听器
mouseReleased 鼠标释放
mousePressed 鼠标按下
mouseExited 鼠标退出
mouseEntered 鼠标进入
mouseClicked 鼠标点击
在本例中,使用mouseEntered,当鼠标进入图片的时候,图片就移动位置

package gui;import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestGUI {public static void main(String[] args) {final JFrame f = new JFrame("LoL");f.setSize(800, 600);f.setLocationRelativeTo(null);f.setLayout(null);final JLabel l = new JLabel();ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");l.setIcon(i);l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());f.add(l);l.addMouseListener(new MouseListener() {// 释放鼠标public void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}// 按下鼠标public void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}// 鼠标退出public void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}// 鼠标进入public void mouseEntered(MouseEvent e) {Random r = new Random();int x = r.nextInt(f.getWidth() - l.getWidth());int y = r.nextInt(f.getHeight() - l.getHeight());l.setLocation(x, y);}// 按下释放组合动作为点击鼠标public void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}
}

示例 4 : 适配器MouseAdapter 鼠标监听适配器
一般说来在写监听器的时候,会实现MouseListener。
但是MouseListener里面有很多方法实际上都没有用到,比如mouseReleased ,mousePressed,mouseExited等等。
这个时候就可以使用 鼠标监听适配器,MouseAdapter 只需要重写必要的方法即可

package gui;import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;public class TestGUI {public static void main(String[] args) {final JFrame f = new JFrame("LoL");f.setSize(800, 600);f.setLocationRelativeTo(null);f.setLayout(null);final JLabel l = new JLabel("");ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");l.setIcon(i);l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());f.add(l);// MouseAdapter 适配器,只需要重写用到的方法,没有用到的就不用写了l.addMouseListener(new MouseAdapter() {// 只有mouseEntered用到了public void mouseEntered(MouseEvent e) {Random r = new Random();int x = r.nextInt(f.getWidth() - l.getWidth());int y = r.nextInt(f.getHeight() - l.getHeight());l.setLocation(x, y);}});f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);}
}

更多内容,点击了解: https://how2j.cn/k/gui/gui-listener/412.html

如何监听事件里发生的错误_Swing 如何进行事件监听相关推荐

  1. js如何监听元素事件是否被移除_JS移除事件监听的方法 .removeEventListener( )

    JS用addEventListener添加事件监听方法后,可以用removeEventListener来解除监听: element.removeEventListener(event, myFunct ...

  2. 监听返回app_基于 Redis 消息队列实现 Laravel 事件监听及底层源码探究

    在 Laravel 中,除了使用 dispatch 辅助函数通过 Illuminate\Bus\Dispatcher 显式推送队列任务外,还可以通过事件监听的方式隐式进行队列任务推送,在这个场景下,事 ...

  3. vue3 实现监听store里state状态变化

    vue3 实现监听store里state状态变化 import { watch } from "vue"; watch(() => store.state.currentDe ...

  4. 将安全信息应用到以下对象时发生错误 拒绝访问_手机资讯:拒绝「京东金融」事件再次发生|如何避免iPhone 应用私自获取照片...

    如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多知识的,这些知识很多小伙伴一般都是不知道的,就好比最近就有很多小伙伴们想要知道拒绝「京东金融」事件再次发生|如何避免iPhone ...

  5. vue 监听对象里的特定数据

    2019独角兽企业重金招聘Python工程师标准>>> vue  监听对象里的特定数据变化 通常是这样写的,只能监听某一个特定数据 watch: {params: function( ...

  6. onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)

    onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案) 参考文章: (1)onchange监听inpu ...

  7. Android监听系统输入法键盘弹出显示与隐藏事件

    Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...

  8. qt Android 按键事件,QT无窗口状态下对键盘事件的监听

    Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...

  9. js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用

    前言:小生不才,只懂得一些皮毛,我努力以最简单的语言将心中的想法表述出来,让更多人能够很轻松的弄明白.文章里面有不足之处望各位大牛指出,使得后面的文章能够朝着更好的方向发展.另外,大家记得点赞哟! 欢 ...

  10. 2017年6月内发生的10大数据中心事件 上

    Switch公司是位于美国拉斯维加斯的数据中心提供商,它是经Uptime Institute认证的最具声望.最可靠的用户之一,未来该公司数据中心设施将不再通过Uptime进行认证. Switch将不再 ...

最新文章

  1. 另一个小程序 返回的支付结果如何得到_手把手教你测微信小程序
  2. php3d按钮,CSS实现3D按钮效果
  3. R语言应用实战-基于R浅谈SEIR传染病模型以以及马尔萨斯,logistic模型(推导过程和源代码)
  4. 直播报名 | CUDA优化:高性能库cuBLAS使用指南
  5. js math.hypot_带有Python示例的math.hypot()方法
  6. 智能蓝牙控制、温湿度控制时间风扇
  7. Sentinel降级_RT_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0039
  8. mysql数据库补充知识3 查询数据库记录信息之多表查询
  9. iOS音频播放 (一):概述 转
  10. c#和javascript分别轻松实现计算24点
  11. 上瘾:如何打造习惯养成中的产品(投资篇)
  12. 多臂老虎机导论(一)引言
  13. Qt5调用VBS脚本
  14. usb声卡驱动_香蕉猴Monkeybanana Hapa系列USB麦克风 测评
  15. springMVC中415错误
  16. [ZT]新点子,就在空气中飘荡着...
  17. 电磁波谱与通讯技术,5G特点
  18. 订单类 京东快递电子面单接口的使用开发
  19. adobe绿色版cs6下载地址
  20. Matlab——行星轨道问题

热门文章

  1. /etc/init.crs enable\disable 状态
  2. jQuery---仿芒果网机票预定智能输入提示.
  3. 实践:VB创建Com组件 在Asp以及.Net中调用
  4. spring mvc组件以及架构流程详解
  5. 反射: 反射在中Android运用
  6. [2018.11.03 T3] 单调序列
  7. async和await的错误捕获
  8. 学习前端的阶段性总结
  9. jboss7 应用详解_【扔掉说明书114】本田 思域 2020款 舒适与娱乐功能详解
  10. 外部表改为内部表_2、从外部导入数据创建表(ACCESS图解操作系列)