java核心技术10阅读(十一)-事件处理

原始的 C这样的语言进行事件驱动的程序设计,那就需要编写代 码来不断地检查事件队列,以便査询操作环境报告的内容(通常这些代码被放置在包含很多 switch语句的循环体中)。显然,这种方式编写的程序可读性很差,而且在有些情况下,编码 的难度也非常大。它的好处在于响应的事件不受限制,而不像 Visual Basic这样的语言,将 事件队列对程序员隐藏起来。
在 AWT所知的事件范围内,完全可以控制事件从事件源 ( event source) 例如,按钮或滚动条,到事件监听器(event listener) 的传递过程,并将任何对象指派给事件监听器。不过事实上,应该选择一个能够便于响应事件的对象。这种事件委托模型(event delegation model ) 与 Visual Basic 那种预定义监听器模型比较起来更加灵活。
Java这样的面向对象语言,都将事件的相关信息封装在一个事件对象(event object ) 中。在 Java中,所有的事件对象都最终派生于java.util.EventObject 类。
在这里插入图片描述
使用 ActionListener 接口的方式都是一样的: actionPerformed 方
法(ActionListener 中的唯一方法)将接收一个 ActionEvent 类型的对象作为参数。这个事 件对象包含了事件发生时的相关信息。

简洁指定监听器
通常来讲,每个监听器执行一个单独的动作。,使用lambda表达式

exitButton.addActionListener(event-> Systeu.exit(O)) ;

一键改变UI

UIManager.setLookAndFeel (className) ;  //ClassName为UI对象名称
SwingUtilities.updateComponentTreeUI (this) ;//this指整体窗口/框架

适配器类
每个含有多个方法的AWT监听器接口都配有一个适配器(adapter) 类,这个类实现了接口中的所有方 法,但每个方法没有做任何事情。例如监听整个窗口动作的WindowListener接口,包含七个方法

动作
Swing包提供了一种非常实用的机制来封装命令,并将它们连接到多个事件源,这就是
Action接口。
Keystroke是一个很有用的类,它封装了对键的说明,实现实现不同按键,

keyboard focus概念

每个 JComponent 有三个输入映射(imputmap),每一个映射的 Keystroke 对象都与动作关联。
在这里插入图片描述
InputMap 不能直接地将 Keystroke 对象映射到 Action对象。而是先映射到任意对象上,
然后由 ActionMap类实现将对象映射到动作上的第 2个映射。这样很容易实现来自不同输入 映射的按键共享一个动作的目的。

 InputMap imap = buttonPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke("ctrl Y"), "panel.yellow");
ActionMap amap = panel.put(KeyStroke.getKeyStroke("ctrl Y","panel.yellow");
amap.put("panel.yellow", yellowAction) ;

在这里插入图片描述
鼠标
MouseListener、MouseMotionListener接口
MouseListener负责处理了mousePressed、mouseReleased、mouseClicked方法,MouseMotionListener负责处理moves、dragged方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值