<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    sunfruit[請?jiān)L問http://www.fruitres.cn]

    --我相信JAVA能走得更遠(yuǎn) QQ:316228067

    [JAVA]用戶自定義事件監(jiān)聽

        --sunfruit

        用戶自定義事件

       

    User defined Event listeners java

    All of us who have used java.awt.event package in either applets
    or in Frames or in swing JFrame, shall agree to the fact that event
    propagation and listener concept is very very useful for capturing
    any action initiated either by user or by system, should be caught
    at the right place and without unneccessarily wasting time traversing
    through all the way from begining to end of source code just to know
    any takers for this event.



    This concept is implemented in form of MouseEvent, KeyEvent, WindowEvent so on so forth.

    JDK has given us a handle for creating our own event object and as well
    as event handling framework using java.util.EventObject and java.util.EventListener.

    You can imagine a scenario whereby you have to write an application, in
    which a email notification feature in a forum.

    Whenever a special event takes place , then your have to notify all the users
    who have registered themselves for this program.

    One solution is to use a Database and query all the users from the table
    and send notification to each and every user.
    But this is more of Database centric approach like old days thick client
    and server model.

    Think about the overhead on database and instead another solution is
    to create an event notification framework, whereby you have to create
    your own version of Event Object and Event Listeners.

    Event object represents the special event and all the users who register
    themselves for the event implements this Event listener.

    Let us take a more deeper plunge into this:

    1. Create a Demo event by creating a DemoEvent.java file that
    extends to java.util.EventObject.

    This class has a constructor that takes the event originator object (DemoSource).
    and a method getSource(), that gives the reference to the object that originated
    this event.

    DemoEvent.java
    
    package demo.listener;
    
    import java.util.EventObject;
    
    public class DemoEvent extends EventObject
    {
    	Object obj;
    	public DemoEvent(Object source)
    	{
    		super(source);
    		obj = source;
    
    	}
    	public Object getSource()
    	{
    		return obj;
    	}
    	public void say()
    	{
    		System.out.println("This is say method...");
    	}
    
    }
    
    


    2. Create the source of event notification file DemoSource.java
    It has a java.util.Vector that acts like a repository for storing all the
    listeners to the events this source provides.

    It has two other common method such as addListener(..) is to add any
    new user to this event.

    And notifyDemoEvent(..) is to alert all the users about this perticular event
    occurance.

    DemoEvent.java
    
    package demo.listener;
    import java.util.*;
    
    public class DemoSource
    {
    	private Vector repository = new Vector();
    	DemoListener dl;
    	public DemoSource()
    	{
    
    	}
    	public void addDemoListener(DemoListener dl)
    	{
    		repository.addElement(dl);
    	}
    	public void notifyDemoEvent()
    	{
    		Enumeration enum = repository.elements();
    		while(enum.hasMoreElements())
    		{
    			dl = (DemoListener)enum.nextElement();
    			dl.demoEvent(new DemoEvent(this));
    		}
    	}
    }
    
    


    3. Define a listener interface that extends to java.util.EventListener
    and contains the method for invoking the Event, here it is demoEvent(DemoEvent de).

    DemoListener.java
    
    package demo.listener;
    
    import java.util.EventListener;
    
    public interface DemoListener extends EventListener
    {
    	public void demoEvent(DemoEvent dm);
    
    }
    
    



    4. Define all the users, who want to listen to this events.
    These objects should implement DemoListener, to be able to
    capture the event propagated from DemoSource.java.

    Listener1.java
    
    package demo.listener;
    
    public class Listener1 implements DemoListener
    {
    	public void demoEvent(DemoEvent de)
    	{
    		System.out.println("Inside listener1...");
    	}
    }
    
    


    Listener2.java
    
    package demo.listener;
    
    public class Listener2 implements DemoListener
    {
    	public void demoEvent(DemoEvent de)
    	{
    		System.out.println("Inside listener2...");
    	}
    }
    
    

    Listener3.java
    
    package demo.listener;
    
    public class Listener3 implements DemoListener
    {
    	public void demoEvent(DemoEvent de)
    	{
    		System.out.println("Inside listener3...");
    	}
    }
    
    


    5. Now it time to write the client for testing this Framework.
    Create a client such as TestDemo.java and create a DemoSource
    object and all the users such as Listener1, Listener2, Listener3.
    And add all these listeners to the demo source by using the addDemoListener(..).
    When the notifyDemoEvent(..) is called on the demo source object,
    the event gets notified to all the users (listener1, listener2, listener3)
    and  the  output comes out to be

    Inside listener1...
    Inside listener2...
    Inside listener3...


    TestDemo.java
    
    package demo.listener;
    
    public class TestDemo
    {
    	DemoSource ds;
    
    	public TestDemo()
    	{
    		try{
    			ds = new DemoSource();
    			Listener1 l1 = new Listener1();
    			Listener2 l2 = new Listener2();
    			Listener3 l3 = new Listener3();
    
    			ds.addDemoListener(l1);
    			ds.addDemoListener(l2);
    			ds.addDemoListener(l3);
    
    			ds.notifyDemoEvent();
    
    		}catch(Exception ex){ex.printStackTrace();}
    	}
    
    	public static void main(String args[])
    	{
    		new TestDemo();
    	}
    }
    

    posted on 2006-02-19 17:58 sunfruit 閱讀(3538) 評論(0)  編輯  收藏 所屬分類: JAVA SE & EE

    主站蜘蛛池模板: 亚洲中文字幕无码一区二区三区| 在线免费观看一级片| 亚洲人成网亚洲欧洲无码久久 | 免费在线观看的网站| 亚洲第一二三四区| 性短视频在线观看免费不卡流畅 | 亚洲人成网亚洲欧洲无码| 99久久免费精品国产72精品九九| 亚洲av乱码一区二区三区| 插B内射18免费视频| 亚洲AV无码成人网站在线观看| 日韩中文字幕在线免费观看| 国产亚洲综合视频| 久久亚洲欧洲国产综合| 97超高清在线观看免费视频| 久久99国产亚洲精品观看| 最近的中文字幕大全免费8| 亚洲an日韩专区在线| 国产成人免费全部网站| 七次郎成人免费线路视频 | 亚洲精品国产精品乱码不卡√ | 亚洲国产成人综合精品| 男人的天堂亚洲一区二区三区| 亚洲男同gay片| 亚洲精品久久久www| a级片免费在线播放| 亚洲国产成人精品无码区在线秒播| 青娱乐免费视频在线观看| 爱情岛论坛亚洲品质自拍视频网站 | 在线亚洲精品自拍| 一区二区三区四区免费视频| 亚洲日本乱码卡2卡3卡新区| 亚洲国产精品毛片av不卡在线| 午夜不卡久久精品无码免费| 亚洲综合一区国产精品| 国产亚洲一区区二区在线| 99国产精品永久免费视频| 又大又硬又粗又黄的视频免费看 | 国产精品免费一区二区三区| 亚洲精品午夜久久久伊人| 无码欧精品亚洲日韩一区夜夜嗨 |