java的事件监听是什么?什么是java侦听器
老铁们,大家好,相信还有很多朋友对于java的事件监听是什么和什么是java侦听器的相关问题不太懂,没关系,今天就由我来为大家分享分享java的事件监听是什么以及什么是java侦听器的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
java中为什么要设置监听器,有什么用
猪哥解答:
1、private JButton jb=new JButton("按钮");这句话声明了一个按钮,名字叫jb。
2、jb.addActionListener(this);这里给jb那个按钮设置了监听,默认为点击触发,当然你写的这个监听有点怪异~
3、点击按钮jb触发监听处理方法actionPerformed,在这里可以做你想要的操作,你代码实现的是改变lab这个label标签的内容。
4、至于java中为什么要用监听,这就像银行装监控一样,监视你的一举一动,银行装监控是为了捕捉每个进银行的人的动作,预防危险的发生。
java中做监听同样是为了监视某个客户端动作用的,万一你给我搞破坏怎么办(监听的作用远不止如此),当然也像平时生活中不是所有的地方都要放监控,要不就没法过了,java中也不是所有的地方都要放监听,具体哪里要放监听,不该是在课本里学的,应该根据实际工厂、公司的需求来定。
java中的事件监听是怎样实现随时监听的,是通过线程吗
不是通过线程实现的,它是通过一种注册--通知机制实现的。在java的设计模式中,有一种模式叫:观察者模式,和这个类似。举个例子,本例子是一个简单的监听当数据发生变化时要做的操作。
1,我们先定义一个接口,可以让多个监听者实现
publicinterfaceIDataListen{
publicvoidupdate(Objectevent,Objectmsg);
}
2,实现一监听者
publicclassDataListenimplementsIDataListen{
@Override
publicvoidupdate(Objectevent,Objectarg){
//TODOAuto-generatedmethodstub
System.out.println("数据发生了变化");
}
}
3,被监听者
publicclassDataManager{
privateList<IDataListen>listenList=newArrayList<>();
publicvoidnotifyListen(Objectevent,Objectmsg){
for(IDataListendataListen:listenList){
dataListen.update(null,null);
}
}
publicvoidaddListen(IDataListendataListen){
listenList.add(dataListen);
}
publicvoidupdateData(Objectmsg){
this.notifyListen(null,msg);
}
publicstaticvoidmain(String[]args){
DataManagerdataManager=newDataManager();
IDataListendataListen1=newDataListen();
IDataListendataListen2=newDataListen();
dataManager.addListen(dataListen1);
dataManager.addListen(dataListen2);
dataManager.updateData("aaa");
}
}
main方法里面是监听的应用。这样就可以监听DataManager中的updateData行为了,当有数据发生变化时,就可以即时被监听者收到。
什么是Java的事件处理机制
JAVA中当事件发生时,他不会进行广播,而是仅仅向关心此事件的对象发送消息。那么他怎么知道谁“关心”此事件呢。
这就要求关心此事件的对象,先行向事件的发出方进行注册,表示我关心此事件,当事件发生时请通知我。
【简单来说】:就是事件的“处理方”向事件的“发出方”先行注册,当事件发生时,事件的“发生方”负责通知事件的“处理方”。
譬如我编写一个窗口,用到了JFrame,我想实现一个功能,当按下Q键时,窗口关闭。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class TestFrame extends JFrame{
private static final long serialVersionUID= 5671798241966272024L;
public static void main(String[] args){
new TestFrame();
}
public TestFrame(){
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
addKeyListener(new MyKeyListener());//这句话就是所谓的注册事件。
// MyKeyListener作为事件的处理方,向事件的触发方TestFrame进行注册。
//这句话的意思是说,MyKeyListener对TestFrame说,我对于你的键盘事件感兴趣,如果有键盘事件请告诉我。
//而TestFrame有一个列表保存着MyKeyListener对象的引用。当键盘按下时,他会列表中所有引用,调用KeyPressed方法。
//当键盘松开时还会调用keyReleased方法,但是我们对于键盘松开不太关心,所以下面的类,我们可以只编写KeyPressed方法。
}
private final class MyKeyListener extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e){
if(e.getKeyCode()== KeyEvent.VK_Q){
System.exit(0);
}
}
}
}
什么是java侦听器
1、监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样
就可以给在线人数加1。
2、常用的监听接口有以下几个:
1)ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。
2)、ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed(HttpSessionEvent se)方法。
4)HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se)方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se)方法。
3、参考样例example:随服务器启动
<web-app>
<listener>
<listener-class>com.tb.listener.CountStartListener</listener-class>
</listener>
package com.tb.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import com.tb.timertask.DoCountTask;
public class CountStartListener extends HttpServlet implements ServletContextListener
{
private static final long serialVersionUID= 1824920962239905170L;
public CountStartListener()
{
// TODO Auto-generated constructor stub
}
public void contextDestroyed(ServletContextEvent arg0)
{
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0)
{
DoCountTask.dotask();
文章分享结束,java的事件监听是什么和什么是java侦听器的答案你都知道了吗?欢迎再次光临本站哦!