首页编程java编程java的事件监听是什么?什么是java侦听器

java的事件监听是什么?什么是java侦听器

编程之家2023-10-11113次浏览

老铁们,大家好,相信还有很多朋友对于java的事件监听是什么和什么是java侦听器的相关问题不太懂,没关系,今天就由我来为大家分享分享java的事件监听是什么以及什么是java侦听器的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java的事件监听是什么?什么是java侦听器

java中为什么要设置监听器,有什么用

猪哥解答:

1、private JButton jb=new JButton("按钮");这句话声明了一个按钮,名字叫jb。

2、jb.addActionListener(this);这里给jb那个按钮设置了监听,默认为点击触发,当然你写的这个监听有点怪异~

java的事件监听是什么?什么是java侦听器

3、点击按钮jb触发监听处理方法actionPerformed,在这里可以做你想要的操作,你代码实现的是改变lab这个label标签的内容。

4、至于java中为什么要用监听,这就像银行装监控一样,监视你的一举一动,银行装监控是为了捕捉每个进银行的人的动作,预防危险的发生。

java中做监听同样是为了监视某个客户端动作用的,万一你给我搞破坏怎么办(监听的作用远不止如此),当然也像平时生活中不是所有的地方都要放监控,要不就没法过了,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侦听器的答案你都知道了吗?欢迎再次光临本站哦!

java编程用什么手机软件?JAVA编程是用什么软件的java web 中的%是什么意思 js中%什么意思