『壹』 java 自定义事件的触发及监听
JAVA事件响应机制
1,先自定义一个事件
public class MyEvent extends java.util.EventObject{
public MyEvent(Object source)
{
super(source);
}
}
2,再自定义一个监听器
public class MyListener implements java.util.EventListener{
//这里是当事件发生后的响应过程
public void EventActivated(MyEvent me)
{
System.out.println("事件已经被触发");
}
}
3,以下这个类为触发事件的事件源
public class MyObject {
private Vector vectorListeners=new Vector();
public synchronized void addMyListener(MyListener ml)
{
vectorListeners.addElement(ml);
}
public synchronized void removeMyListener(MyListener ml)
{
vectorListeners.removeElement(ml);
}
protected void activateMyEvent()
{
Vector tempVector=null;
MyEvent e=new MyEvent(this);
synchronized(this)
{
tempVector=(Vector)vectorListeners.clone();
for(int i=0;i<tempVector.size();i++)
{
MyListener ml=(MyListener)tempVector.elementAt(i);
ml.EventActivated(e);
}
}
}
//定义一个公用方法用于触发事件
public void test()
{
activateMyEvent();
}
}
4,测试类
public class Test {
public static void main(String[] args)
{
MyObject mo=new MyObject();
//注册该事件
mo.addMyListener(new MyListener());
//触发该事件
mo.test();
}
}
『贰』 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语言的事件处理机制,事件处理的3要素是什么.
(1)事件源 事件源是一个事件的产生者,如按钮、窗口及文本域等。
(2)事件类型 Java中所有的事件都封装成一个类,这些事件类被集中在java.awt.event包,所有的事件类均继承了AWTEvent类和一个方法——getSouce()方法,该方法返回发生事件的对象。
(3)事件监听器 不同的类型事件发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,引入了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。
『肆』 java中什么是事件源,事件的处理过程是什么
就是你通过什么触发了一个事件,比如单击按钮,那么这个按钮就是事件源,鼠标的移动(覆盖,离开,),键盘的输入,根据不同的情况可做不同的监听事件,使用不同的类来处理!
『伍』 浅析Java语言的事件处理快捷回复
在JAVA程序设计中 事件的处理是非常重要的 尤其是在需要自定义事件和设计JavaBean时 对事件的处理过程有一个完整的认识对于编程是很有帮助的
下面用一个演示性的例子来说明事件及其处理过程
一 事件的组成
如果想要自定义一个事件 则必须提供一个事件的监听接口以及一个事件类 在JAVA中监听接口继承java util EventListener 事件类继承java util EventObject 很多基本的事件在编程环境中都已经提供可以很方便使用 但是在自定义事件中必须要要了解这些
下面是一个事件类的代码 事件类可以向用户处理程序提供被监听类的信息
import java util *;
public class PropertyEvent extends EventObject {
public PropertyEvent(){}
}
下面是监听接口的代码
import java util *;
public interface PropertyListener extends EventListener {
public void propertyChanged(PropertyEvent propertyEvent);
}
二 事件的处理机制
下面是一段简要的被监听类代码 通过代码分析事件处理过程
import java util *;
public class Exam {
private int property;
//listeners用来存放已注册的监听对象
private Set listeners= new HashSet();
public void addListener(PropertyListener propertyListener){
//listeners必须保证只能被一个线程访问
synchronized(listeners){
listeners add(propertyListener);
}
}
public void firePropertyChange(){
Iterator iterator;
synchronized(listeners){
//将listeners中的类名放到iterator
iterator = new HashSet(erator();
}
//创建事件类
PropertyEvent propertyEvent = new PropertyEvent();
while(iterator hasNext()){
PropertyListener propertyListener = (propertyListener) iterator next();
//调用用户的事件处理程序
propertyListener propertyChanged(propertyEvent);
}
}
}
当属性值发生变化时 首先进行内部处理调用firePropertyChange方法 产生一个事件对象然后用事件对象为参数来调用用户的事件处理程序
三 事件处理的使用
基本用法
public Exam exam;
exam addListener(this);
public void propertyChange(PropertyEvent event){ }
注 exam是被监听对象 this为监听对象 是已经实现了接口方法的当前类 addListener
将当前类注册到listeners
一个被监听对象可以有多个监听对象
exam addListener(listener );
exam addListener(listener );
这样当exam的property发生变化时 actionListener 和actionListener 的处理程序都会
被调用 当然listener 和listener 必须都是已实现接口方法的类
被监听的对象也可以是实现了方法的接口
exam addListener(
new PropertyListener(){
//用户定义事件处理过程
public void propertyChange(PropertyEvent event){
}
);
lishixin/Article/program/Java/hx/201311/26740
『陆』 java中的事件监听是怎样实现随时监听的,是通过线程吗
java中的事件监听不是通过线程实现的,它是通过一种注册--通知机制实现的。在专java的设计模式中,有一种模属式叫:观察者模式,和这个类似。