搜档网
当前位置:搜档网 › 监听Android屏幕是否锁屏

监听Android屏幕是否锁屏

监听Android屏幕是否锁屏
监听Android屏幕是否锁屏

实现方法:1)通过BroadcastReceiver接收广播Intent.ACTION_SCREEN_ON和Intent.ACTION_SCREEN_OFF可以判断屏幕状态是否锁屏,但是只有屏幕状态发生改变时才会发出广播;

2)如果要在屏幕状态发生改变之前就想获取屏幕状态,可以通过反射机制调用PowerManager的isScreenOn方法。

具体实现,见代码:

实现Screen状态监听的类ScreenObserver,实现如下:

[java]view plaincopy

1package com.isoft.screen;

2

3import https://www.sodocs.net/doc/3b6838306.html,ng.reflect.Method;

4

5import android.app.Activity;

6import android.content.BroadcastReceiver;

7import android.content.Context;

8import android.content.Intent;

9import android.content.IntentFilter;

10import android.os.PowerManager;

11import android.util.Log;

12

13/**

14 *

15 * @author zhangyg

16 *

17 */

18public class ScreenObserver{

19private static String TAG = "ScreenObserver";

20private Context mContext;

21private ScreenBroadcastReceiver mScreenReceiver;

22private ScreenStateListener mScreenStateListener;

23private static Method mReflectScreenState;

25public ScreenObserver(Context context){

26 mContext = context;

27 mScreenReceiver = new ScreenBroadcastReceiver();

28try {

29 mReflectScreenState = PowerManager.class.getMethod("isScreenOn", 30new Class[] {});

31 } catch (NoSuchMethodException nsme) {

32 Log.d(TAG, "API < 7," + nsme);

33 }

34 }

35

36 /**

37 * screen状态广播接收者

38 * @author zhangyg

39 *

40 */

41private class ScreenBroadcastReceiver extends BroadcastReceiver{

42private String action = null;

43 @Override

44public void onReceive(Context context, Intent intent) {

45 action = intent.getAction();

46if(Intent.ACTION_SCREEN_ON.equals(action)){

47 mScreenStateListener.onScreenOn();

48 }else if(Intent.ACTION_SCREEN_OFF.equals(action)){

49 mScreenStateListener.onScreenOff();

50 }

51 }

52 }

55 /**

56 * 请求screen状态更新

57 * @param listener

58 */

59public void requestScreenStateUpdate(ScreenStateListener listener) {

60 mScreenStateListener = listener;

61 startScreenBroadcastReceiver();

62

63 firstGetScreenState();

64 }

65

66 /**

67 * 第一次请求screen状态

68 */

69private void firstGetScreenState(){

70 PowerManager manager = (PowerManager) mContext

71 .getSystemService(Activity.POWER_SERVICE);

72if (isScreenOn(manager)) {

73if (mScreenStateListener != null) {

74 mScreenStateListener.onScreenOn();

75 }

76 } else {

77if (mScreenStateListener != null) {

78 mScreenStateListener.onScreenOff();

79 }

80 }

81 }

82

84 * 停止screen状态更新

85 */

86public void stopScreenStateUpdate(){

87 mContext.unregisterReceiver(mScreenReceiver);

88 }

89

90 /**

91 * 启动screen状态广播接收器

92 */

93private void startScreenBroadcastReceiver(){

94 IntentFilter filter = new IntentFilter();

95 filter.addAction(Intent.ACTION_SCREEN_ON);

96 filter.addAction(Intent.ACTION_SCREEN_OFF);

97 mContext.registerReceiver(mScreenReceiver, filter);

98 }

99

100 /**

101 * screen是否打开状态

102 * @param pm

103 * @return

104 */

105private static boolean isScreenOn(PowerManager pm) {

106boolean screenState;

107try {

108 screenState = (Boolean) mReflectScreenState.invoke(pm); 109 } catch (Exception e) {

110 screenState = false;

111 }

112return screenState;

114

115public interface ScreenStateListener {

116public void onScreenOn();

117public void onScreenOff();

118 }

119}

测试ScreenObserver功能的示例类ScreenObserverActivity,实现如下:[java]view plaincopy

120package com.isoft.screen;

121

122import android.app.Activity;

123import android.os.Bundle;

124import android.util.Log;

125

126import com.isoft.screen.ScreenObserver.ScreenStateListener;

127

128public class ScreenObserverActivity extends Activity {

129private String TAG = "ScreenObserverActivity";

130private ScreenObserver mScreenObserver;

131

132 @Override

133public void onCreate(Bundle savedInstanceState) {

134super.onCreate(savedInstanceState);

135 setContentView(https://www.sodocs.net/doc/3b6838306.html,yout.main);

136

137 mScreenObserver = new ScreenObserver(this);

138 mScreenObserver.requestScreenStateUpdate(new ScreenStateListener() { 139 @Override

140public void onScreenOn() {

141 doSomethingOnScreenOn();

142 }

143

144 @Override

145public void onScreenOff() {

146 doSomethingOnScreenOff();

147 }

148 });

149 }

150

151private void doSomethingOnScreenOn() {

152 Log.i(TAG, "Screen is on");

153 }

154

155private void doSomethingOnScreenOff() {

156 Log.i(TAG, "Screen is off");

157 }

158

159 @Override

160protected void onDestroy() {

161super.onDestroy();

162 //停止监听screen状态

163 mScreenObserver.stopScreenStateUpdate(); 164 }

165}

Activiti 监听器的配置使用

Activiti 监听器的配置使用 一)流程监听器的配置 此监听器的作用是记录流程的启动和结束事件日志,详细参考类 cn.bc.workflow.activiti.delegate.ProcessLogListener 用Activiti Designer打开流程图,点击空白处,在Properties的Listeners中如下配置流程的start和end两个事件: 二)任务监听器的配置 此监听器的作用是记录任务的创建、分派和完成的事件日志,详细参考类 cn.bc.workflow.activiti.delegate.TaskLogListener 用Activiti Designer打开流程图,点击要配置的任务节点,在Properties的Listeners中如下配置任务的事件监听:

如下是自动将任务分配到岗位或岗位内用户的任务监听器的配置: 详见类cn.bc.workflow.activiti.delegate.Assign2GroupUserListener,监听器在流程图中需要配置为"java class"类型,Fields参数中有两种配置方式:1)岗位名称+保存组织ID的流程变量名(全局变量),2)岗位编码。 监听器会根据配置方式先获取岗位,然后自动获取岗位内的用户信息,如果岗位内只有一个用户,就直接将任务分配给此用户,否则分配给岗位。

三)流向或网关监听器的配置 此监听器的作用是记录流向的执行事件日志,在平台中是可选的,视具体情况按需配置,详细参考类cn.bc.workflow.activiti.delegate.FlowLogListener 用Activiti Designer打开流程图,点击要配置的流向或网关,在Properties的Listeners 中类似任务监听器的方式进行配置即可:

Java+Swing+常用事件和监听器接口

Swing 常用事件和监听器接口 AncestorEvent AncestorListener ancestorAdded(AncestorEvent e) ancestorMoved(AncestorEvent e) ancestorRemoved(AncestorEvent e) CaretEvent 通知感兴趣的参与者事件 源中的文本插入符已经发 生更改 CaretListener caretUpdate(CareEvente) ChangeEvent 通知感兴趣的参与者事件 源中的状态已经发生更改 ChangeListener stateChanged(ChangeEvent e) HyperlinkEvent 通知感兴趣的参与者发生 了与超文本链接有关的事 情 HyperlinkListener hyperlinkUpdate(HyperlinkEvent e) InternalFrameEvent 以事件源的形式添加对J InternalFrame对象的支持的 A WTEvent InternalFrameListener internalFrameActivated(InternalFrameEvent e) internalFrameClosed(InternalFrameEvent e) internalFrameClosing(InternalFrameEvent e) internalFrameDeactived(InternalFrameEvent e) internalFrameDeiconified(InternalFrameEvent e) internalFrameIconified(InternalFrameEvent e) internalFrameOpened(InternalFrameEvent e) ListDataEvent 定义一个列表更改的事件ListDataListener contentsChanged(ListDataEvent e) intervalAdded(ListDataEvent e) intervalRemoved(ListDataEvent e)

监听器与过滤器

监听器与过滤器 监听器简介 什么是监听器 1.能监听某个对象的状态变化的组件 2.监听域对象的变化 监听器相关的概念 1.事件源:被监听的对象- request、session、servletContext 2.监听器:监听事件源的对象- 8个监听器 3.注册监听器:监听器与事件源相绑定 4.响应行为:监听到事件源变化时,去做什么事情 监听器划分 1.三个监听域对象的创建与销毁ServletContextListener HttpSessionListener ServletRequestListener 2.三个监听域对象当中属性变化ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

域监听器 ServletContext域监听器监听ServletContext域的创建与销毁的监听器ServletContextListenerServletContext域生命周期:服务器启动创建、服务器关闭销毁监听器的编写步骤: 1.编写一个监听器类去实现监听器接口 2.覆盖监听器的方法 3.需要在web.xml中进行配置 作用 1.初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化 2.加载一些初始化的配置文件 3.任务调度

HttpSessionListener 监听HttpSession域的创建与销毁的监听器HttpSessionListener HttpSession的生命周期:第一次调用request.getSession时创建、服务器关闭session 过期或手动销毁 应用场景:记录访问人数 过滤器介绍 什么是过滤器 1.filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行 2.可以对目标资源访问前后进行逻辑处理 过滤器编写步骤 1.编写一个过滤器的类实现Filter接口 2.实现接口中尚未实现的方法(主要是DoFilter方法)

第八讲 AWT和事件监听

第八讲AWT和事件监听打印本页 1 基本概念 下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。 1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。常用的构件有: 按钮构件 项目选择构件:复选框(Checkbox)列表(List或Choice) 文本构件:文本框文本区 对话框构件:对话框文件对话框提示框帮助 菜单构件:弹出式菜单复选框菜单 1.2容器 容器是用来组织构件的单元。常用的容器有:面板、窗口。 1.3布局管理器: 布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。AWT提供了几种标准的布局管理器。 1.4事件监听 要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。 我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。 2 几个简单的构件和容器 标签(https://www.sodocs.net/doc/3b6838306.html,bel) 标签用来显示文本。 演示(StarterApplet) 面板(java.awt.Panel) 面板是一个通用的容器,在上面可以放置各种构件。 我们经常用的Applet类,其实就是面板的一个子类 按钮(java.awt.Button) 按钮具有三维外型,当它们被激活时触发按钮事件,用户可以根据按钮事件,做出适当的反应,比如执行一系列操作等。 演示 3 事件 AWT有两种事件处理模型:一种是基于继承的模型,它在AWT1.1或以前的版本中使用,现在已经逐渐被淘汰;另一种是基于授权的事件模型。我们主要学习给予授权的事件模型。 授权事件模型的原理很简单:事件源激发事件、事件监听器监听事件,最后执行事件。可以通过调用addXYZListener(XYZListner)方法向构件注册监听器。把监听器加到构件中以后,如果构件激发相应类型的事件,

键盘监听器与鼠标监听器

键盘监听器 键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KE Y_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASC II码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual K ey Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。 VK_LEFT/VK_RIGHT 左右方向键VK_CONTROL Ctrl键 VK_KP_UP 小键盘向上VK_ATL Alt键 VK_PAUSE 暂停键VK_SHIFT Shift键 VK_NUMBER0 小键盘数字0 VK_F1 功能键F1 VK_0 数字键0 VK_B 字母键B 虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONT ROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。 监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt), keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。 除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKey Text(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。 下面的例子演示得到键码和字符的方法,在命令行上显示结果。 例15 本例程演示键盘监听器后键码的用法。 /// // KeyEvt.java

JSP中的Filter拦截器和Listener监听器

JSP中的Filter过滤器和Listener监听器 1. JSP中的过滤器 1.1 什么是过滤器 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet 或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择: (1)以常规的方式调用资源(即,调用servlet或JSP页面)。 (2)利用修改过的请求信息调用资源。 (3)调用资源,但在发送响应到客户机前对其进行修改。 (4)阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。 1.2 过滤器的基本原理 过滤器可以对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理。这样,客户的请求在“过滤器链”里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改业务数据”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话查看该用户是否有修改权限;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。 1.3 过滤器的使用 开发Servlet过滤器的步骤如下:(1)编写实现Filter接口的类;(2)在web.xml中配置Filter。 1.3.1 实现Filter接口类 Filter接口定义了以下方法: 成员描述 destory() 由Web容器调用,初始化此Filter。 init(FilterConfig filterConfig) 由Web容器调用,初始化此Filter。 doFilter(ServletRequest request, 具体过滤处理代码,其中FilterChain参数非常重要,允许通ServletResponse response,FilterChain chain) 过当前过滤器时须要调用FilterChain.doFilter() 下面示例实现一个权限过滤器,若用户尚未登录(Session中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。 public class SecurityFilter implements Filter {

事件监听器

不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent 对象,而窗口可以发送WindowEvent对象。 AWT时间处理机制的概要: 1.监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。 2.事件源是一个能够注册监听器对象并发送事件对象的对象。 3.当事件发生时,事件源将事件对象传递给所有注册的监听器。 4.监听器对象将利用事件对象中的信息决定如何对事件做出响应。 下面是监听器的一个示例: ActionListener listener = ...; JButton button = new JButton("OK"); button.addActionListener(listener); 现在,只要按钮产生了一个“动作事件”,listener对象就会得到通告。对于按钮来说,正像我们想到的,动作事件就是点击按钮。 为了实现ActionListener接口,监听器类必须有一个被称为actionPerformed 的方法,该方法接收一个ActionEvent对象参数。 class MyListener implements ActionListener { ...; public void actionPerformed(ActionEvent event) { //reaction to button click goes here } } 只要用户点击了按钮,JButton对象就会创建一个ActionEvent对象,然后调用listener.actionPerformed(event)传递事件对象。可以将多个监听器对象添加到一个像按钮这样的事件源中。这样一来,只要用户点击按钮,按钮就会调用所有监听器的actionPerformed方法。 实例:处理按钮点击事件 为了加深对事件委托模型的理解,下面以一个响应按钮点击事件的简单示例来说明所需要知道的细节。在这个示例中,想要在一个面板中放置三个按钮,添加三个监听器对象用来作为按钮的动作监听器。 在这个情况下,只要用户点击面板上的任何一个按钮,相关的监听器对象就会接收到一个ActionEvent对象,它表示有个按钮被点击了。在示例程序中,监听器对象将改变面板的背景颜色。 在演示如何监听按钮点击事件之前,首先需要讲解一下如何创建按钮以及如何将他们添加到面板中。 可以通过在按钮构造器中指定一个标签字符串、一个图标或两项都指定来创建一个按钮。下面是两个示例: JButton yellowButton = new JButton("Yellow"); JButton blueButton = new JButton(new ImageIcon("blue-ball.gif")); 将按钮添加到面板中需要调用add方法:

黑马程序员安卓教程:案例-短信监听器

黑马程序员安卓教程:案例-短信监听器 一、需求 系统接收到短信时会将该事件以有序广播(部分自定义的ROM可能已经修改了这个策略,比如:小米的MIUI系统)的形式发送出去,因此我们只需要自定义一个BroadCastReceiver监听该广播(android.provider.Telephony.SMS_RECEIVED)即可监听到短信的到来。由于该广播是有序的,因此如果将我们自定义的BroadCastReceiver配置了较高的优先级,那么我们就能先于系统短信app接收到该广播,然后终止该广播,从而就实现了短信拦截功能。 通过该案例我们可以学到: 1、什么是有序广播? 2、如 何终止有序广播3、如何从 广播中获取短信4、广播的 优先级概念 在该案例中我们要做一个类似短信黑名单的应用,主界面提供一个EditText和一个Button,让用户输入一个“黑名单” ,点击保存之后,如果该号码发短信过来,那么我们的应用就将其拦截。 布局界面很简单,如【文件1-6】所示。 【文件1-6】activity_main.xml 1. 9

5. 6. 11. 17. 18. 三、代码 在该工程中总共用到了两个类,一个是主界面对应的MainActivity,另外一个是广播接收者SmsListenerReceiver。 【文件1-7】MainActivity.java 1. package com.itheima.smslistener; 2. 3.import android.os.Bundle; 4.import android.text.TextUtils; 5.import android.view.View; 6.import android.widget.EditText; 7.import android.widget.Toast; 8.import android.app.Activity; 9.import android.content.SharedPreferences; 10./** 11.* 让用户输入要拦截的号码 12.* 13.* @author wzy2015-11-19 14.* 15.*/ 16.public class MainActivity extends Activity{ 17. 18.private EditText et_num; 19.private SharedPreferences sp; 20. 21.@Override 22.protected void onCreate(Bundle savedInstanceState){

弄懂事件源、事件对象和监听接口

事件源:组件,例如Button 事件对象:event,例如MouseEvent类的对象 事件监听接口:EventListener,例如MouseListener EventListener 接口是处理事件的主要方法。用户实现EventListener 接口,并使用AddEventListener 方法在EventTarget 上注册其侦听器。用户还应该在使用完侦听器后从其EventTarget 移除EventListener。 MouseListener用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用MouseMotionListener。) 旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅重写所需的方法)。 然后使用组件的addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将MouseEvent 传递给该方法。 每个事件类型都有相对应的监听者接口。想要接受WindowEvent吗?那就实现WindowListener接口。 一般会用到事件监听接口中的某一种或几种方法,所以应该一般会用扩展抽象类MouseAdapter的方法。那是怎么个扩展法呢??? 虽然鼠标事情只有MouseEvent一种事件对象,却有不同的事件方法来表示不同类型的鼠标事件。 很重要的一句话:"实现监听接口让按钮有一个回头调用程序的方法。Interface正是声明调用(call-back)方法的地方" 下面用button、ActionEvent和ActionListener来说明事件源、事件对象和事件监听接口之间的关系: 1.先来看button怎样来添加一个监听接口 addActionListener(ActionListener l) ActionListener:继承AWTEvent,指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如Button)生成此高级别事件。事件被传递给每一个ActionListener 对象,这些对象是使用组件的addActionListener 方法注册的,用以接收这类事件。 因为ActionListener是个接口,所以要用类来继承它,然后实现它的actionPerformed方法。actionPerformed方法定义如下: void actionPerformed(ActionEvent e)

Android事件监听器

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类 使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因: 1、事件监听器通常属于特定的gui界面,定义成外部类不篮球提高程序的内聚性。 2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。 但如果某个事件监听器确实需要被多个gui界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。 第五种:直接绑定到标签 Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。 对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx (View source) 的方法的方法名。在布局文件中为button添加属性,如一代码:

java_listener监听器教程及实例

一.基础知识 JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。 其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet 中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener 的类。 1. Servlet中的Listener和Event: 在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。ServletContextListener接口 [接口方法] contextInitialized()与 contextDestroyed() [接收事件] ServletContextEvent [触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。ServletContextAttributeListener [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] ServletContextAttributeEvent [触发场景] 若有对象加入为application(ServletContext)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。 HttpSessionListener [接口方法] sessionCreated()与sessionDestroyed () [接收事件] HttpSessionEvent [触发场景] 在session (HttpSession)对象建立或被消灭时,会分别呼叫这两个方法。

Java事件处理机制- 事件监听器的四种实现方式

Java事件处理机制- 事件监听器的四种实现方式 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: Java代码复制代码收藏代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; /** *Java事件处理机制:自身类作为事件监听器 *@author Winty(wintys@https://www.sodocs.net/doc/3b6838306.html,) *@version 2008-12-3 */ class ThisClassEvent extends JFrame implements ActionListener{ JButton btn; public ThisClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /**************************************/ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } /**************************************/ public static void main(String args[]){

java事件监听机制

java事件监听机制 java中的事件机制的参与者有3种角色: 1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event source:具体的接受事件的实体,比如说,你点击一个button,那么button就是event source,这样你必须使button对某些事件进行相应,你就需要注册特定的listener,比如说MouseEvent之中的MouseClicked方法,这是他就必须有了add方法 3.event listener:具体的对监听的事件类,当有其对应的event object产生的时候,它就调用相应的方法,进行处理。在windows程序设计里边这种相应使用callback机制来实现的 先看看jdk提供的event包:public interface EventListener:所有事件侦听器接口必须扩展的标记接口。public class EventObject extends Object implements Serializable所有事件状态对象都将从其派生的根类。所有Event 在构造时都引用了对象"source",在逻辑上认为该对象是最初发生有关Event 的对象。 在Java2处理事件时,没有采用dispatchEvent()-postEvent()-handleEvent()方式,采用了监听器类,每个事件类都有相关联的监听器接口。事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。 对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承java.util.EventListener。实现了事件监听者接口中一些或全部方法的类就是事件监听者。 伴随着事件的发生,相应的状态通常都封装在事件状态对象中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。 开始之前首先问个问题:您熟悉java.util.EventObject 和java.util.EventListener两个类以及他们已有的子类吗? 如果你已经能够熟练使用jdk为我们提供的事件监听器,并且很熟悉MouseEvent, KeyEvent, WindowEvent等等这些jdk为我们准备好的事件,那么想必你对java的事件机制已经有所理解。但是也许你还是觉得虽然用起来没什么问题,但是原理还是有些糊涂,那么下面我们再进一步自己实现这些事件和监听器,我们把这个取名为自定义事件。 其实自定义事件在java中很有用处,我们有的时候想让自己的程序产生一个事件,但有不希望(或者不可能)用鼠标,键盘之类的输入设备进行操作,比如你写一个应用程序,在这个程序中一旦收到邮件就对邮件进行相关处理,对于“收到邮件”这个事件,jdk中就没有

servlet监听器

Servlet监听器: 1,什么是监听器? 其主要的功能就是监听Web的各种操作,当相关的操作触发后将产生的事件,并对此事件进行处理; 2,对application监听! 对application监听,实际上就是对ServletContext(Servlet上下文)监听,主要使用ServletContextListener和ServletContextAttributeListener 两个接口; ServletContext状态监听:ServletContextListener接口; 对Servlet上下文状态监听可以使用javax.servlet.ServletContextListener 接口,此接口的方法如下: No 方法类 型 描述 1 public void contextInitialized(ServletContextEvent sce) 普 通 容器启动时 触发 2 public void contextDestoryed(ServletContextEvent sce) 普 通 容器销毁时 触发 在ServletContext监听操作中,一旦触发了ServletContextListener接口中定义的事件后,可以通过ServletContextEvent进行事件的处理,此事件定义的方法如下: No 方法类 型 描述 1 public ServletContext getServletContext() 普 通 取得ServletContext对 象 可以通过getServletContext()方法取得一个ServletContext对象的实例,一个简单的ServletContextListenerDemo: Java代码 1.package com.keith.listener; 2. 3.import javax.servlet.ServletContextEvent; 4.import javax.servlet.ServletContextListener;

servlet的八大监听器

JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。 其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。 1. Servlet中的Listener和Event: 在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。ServletContextListener接口 [接口方法] contextInitialized()与 contextDestroyed() [接收事件] ServletContextEvent [触发场景] 在Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。 ServletContextAttributeListener [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] ServletContextAttributeEvent [触发场景] 若有对象加入为application(ServletContext)对象的属性,则 会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、attributeRemoved()。 HttpSessionListener [接口方法] sessionCreated()与sessionDestroyed () [接收事件] HttpSessionEvent [触发场景] 在session (HttpSession)对象建立或被消灭时,会分别呼叫这 两个方法。 HttpSessionAttributeListener [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved() [接收事件] HttpSessionBindingEvent [触发场景] 若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()、 attributeRemoved()。 HttpSessionActivationListener [接口方法] sessionDidActivate()与 sessionWillPassivate() [接收事件] HttpSessionEvent [触发场景] Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象

课题_JAVA事件监听器之Button类中的addActionListener(ActionListener l)方法

JAVA:事件监听器之Button类中的addActionListener(ActionListener l)方法 addActionListener public void addActionListener(ActionListener l) 添加指定的动作侦听器,以接收发自此按钮的动作事件。当用户在此按钮上按下或释放鼠标时,发生动作事件。如果 l 为 nu ll,则不抛出任何异常,也不执行任何动作。 java.awt.event 接口 ActionListener ——摘自:JDK6API 例子:使按钮具有关闭窗口的功能 1import javax.swing.*; 2import java.awt.*; 3import java.awt.event.*; 4public class FrameDemo 5{ 6//定义该图形中所需的组件的引用 7private Frame f; 8private Button bt; 9 10//方法 11FrameDemo()//构造方法 12{ 13madeFrame(); 14} 15 16public void madeFrame() 17{ 18 f = new Frame("My Frame"); 19 20//对Frame进行基本设置。 21 f.setBounds(300,100,600,500);//对框架的位置和大小进行设置 22 f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局 23 24bt = new Button("My Button"); 25 26//将组件添加到Frame中 27 f.add(bt); 28 29//加载一下窗体上的事件 30myEvent(); 31 32//显示窗体 33 f.setVisible(true); 34} 35 36private void myEvent() 37{ 38 f.addWindowListener(new WindowAdapter()//窗口监听

Servlet事件监听器

序 一、概念 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。 二、Servle监听器 1、编写 Servlet监听器 (1)和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方法。(2)和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用标签配置好监听器,web容器就会自动把监听器注册到事件源中。 (3)一个 web.xml文件中可以配置多个 Servlet 事件监听器,web服务器按照它们在web.xml 文件中的注册顺序来加载和注册这些 Serlvet事件监听器。 2、在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext, HttpSession和ServletRequest这三个域对象。 (1)监听servletContext域对象创建和销毁 ①ServletContextListener接口用于监听 ServletContext 对象的创建和销毁事件。 ⅰ当 ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法 ⅱ当 ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。 ②servletContext域对象何时创建和销毁: ⅰ创建:服务器启动针对每一个web应用创建servletcontext ⅱ销毁:服务器关闭前先关闭代表每一个web应用的servletContext (2)监听HttpSession域对象创建和销毁 ①HttpSessionListener接口用于监听HttpSession创建和销毁 ⅰ创建一个Session时,sessionCreated(HttpSessionEventse)方法将会被调用。 ⅱ销毁一个Session时,sessionDestroyed (HttpSessionEventse)方法将被调用。 ②Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session 销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间 (3)监听HttpRequest域对象创建和销毁 ①ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁。 ⅰRequest对象被创建时,监听器的requestInitialized方法将会被调用。 ⅱRequest对象被销毁时,监听器的requestDestroyed方法将会被调用。 ②servletRequest域对象创建和销毁的时机: ⅰ创建:用户每一次访问,都会创建一个reqeust ⅱ销毁:当前访问结束,request对象就会销毁 3、Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。 (1)监听三个域对象创建和销毁的事件监听器

相关主题