1. 程式人生 > >java中的事件監聽是怎樣實現的

java中的事件監聽是怎樣實現的

 Java中的事件監聽是整個Java訊息傳遞的基礎和關鍵。牽涉到兩類物件:事件發生者和事件監聽者。事件發生者是事件的起源,它可以是一個按鈕,編輯框等。事件監聽者就是事件的接受者,如果要想接收某個事件,它必須對該事件的發生者說一聲:嗨,哥們,有事吱一聲。這個過程相當與在事件發生者那兒註冊了一下。當事件發生者真的有事件發生時,就會對所有對該事件註冊的所有監聽者送一份參考訊息說:有內幕,有內幕!!事件監聽者聽到後,拿過來看一下,根據這份報紙各幹各的事。參考訊息這份報紙就是java中的事件物件。


        具體實現呢,可以看看Button的原始碼。可能不好看得懂。那好我們仿照侯捷先生的作法,來模擬一個這樣的事件傳遞: 
        定義一個自己的事件:

1 2 3 4 5 public   MyEvnet{  private   int   value;  public   int   getValue(){return   value;}  public   void   setValue(int   value){this.value=value;}  }


        做一個介面 Listenable 

1 2 3 interface   Listenable{  public   void   enventChanged(MyEvent   e); 
}

        做一個事件發生者,此類中儲存有所有在這裡報到的類的引用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public   MySource{  int   value;  Vector   listeners=new   Vector();  public   addListener(Listenable   l){listeners.add(l);}  public   void   setValue(int   value){  this.value=value; 
fireChanged();  private   void   fireChanged(){  MyEvent   e=new   MyEvent();  e.setValue(value);  for(int   i=0;i <listeners.size();i++){  Listenable   l=(Listenable)listeners.elementAt(i);  l.eventChanged(e);  }

        好了,如果誰想監聽MySource的value值改變了,就在MySource哪兒註冊一下,然後寫訊息處理程式碼,就可以了,我們定義這樣一個監聽者:

1 2 3 4 5 MyListener   implements   Listenable{  public   void   eventChanged(MyEvent   e){  System.out.println( "value   changed   to:   "+e.getValue());  }


        這樣,當MySource的value真的改變時,就會觸發此方法。 

        然後在其他程式碼中把MyListener註冊到MySource:

1 2 3 4 MySource   ms=new   MySource();  MyListener   ml=new   MyListener();  ms.addListener(ml);  ms.setValue(10);

相關推薦

springboot 事件模式的一種實現

前言: 事件監聽模式是一種常用的設計模式,在springboot 中我們如何實現呢? 首先我們要理解事件監聽中需要的幾個角色 事件釋出者 (即事件源) 事件監聽者 事件本身 廢話不多說直接上程式碼 定義事件本身 事件本身需要繼承ApplicationEvent package com.yxd; impo

java事件

java監聽器實現的類 1.ServletContextListener:對servlet上下文的建立和銷燬監聽 2.ServletContextAttributeListener:監聽servlet上下文屬性的新增、刪除和替換 3.HTTPSessionListener:

Java新增事件的四種方法程式碼例項

1.Java事件監聽處理——自身類實現ActionListener介面,作為事件監聽器   class EventListener1 extends JFrame implements ActionListener { private JButton btBlue, btDia

Android 拍照 截圖 事件實現

需求是獲得使用者截圖,或者拍照的主動存圖行為。 但是 android 官方沒有提供回撥廣播之類的實現監聽,所以需要用另一種方式達到需求,這裡實現的就是通過監聽media資料夾實現目的。 所需許可權:  <uses-permission android:name="an

Java新增事件的方法及程式碼例項

一、Java事件監聽處理--匿名內部類處理 class frame1 extends JFrame  { private JButton btdialog;public frame1(){setTitle("事件監聽器");setBounds(100,100,500,400)

java機制——觀察者設計模式詳解

好久沒有做筆記了,我發現研究過一個東西后忘的很快,等下次遇到後還得重新查資料學,倒不如寫篇筆記記錄一下下次遇到相同的問題後查查筆記瞬間就知道了,從而節省了好多時間,今天心血來潮哈哈,寫一篇簡單的筆記

Vue 事件實現導航欄吸頂效果(頁面滾動後定位)

所說的吸頂效果就是在頁面沒有滑動之前,導航欄的效果如下圖所示:當頁面向上滑動之後,導航欄始終固定在頁面的上方。具體程式碼:寫入事件監聽,監聽滾動條。mounted () { // 事件監聽滾動條 window.addEventListener('scroll', this.watchS

java事件(一)按鈕

package 第一版; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public cl

Java event事件屬性值變化 demo

1、定義一個 ValueChangedEvent ValueChangedEvent用於在設定屬性值的時候,觸發事件。 package org.teamlet; import java.util.EventObject; public class ValueChange

java awt 事件 簡單示例

/* * 事件監聽的四步: * 1.要有事件源物件:button * 2.要發生某種事件(類):ActionEvent,封裝了事件的資訊 * 3.要有監聽器(藉口):接到事件後進行處理 Monitor * 4.要把監聽器註冊到事件源物件上 b.addActionL

java事件是怎樣實現

 Java中的事件監聽是整個Java訊息傳遞的基礎和關鍵。牽涉到兩類物件:事件發生者和事件監聽者。事件發生者是事件的起源,它可以是一個按鈕,編輯框等。事件監聽者就是事件的接受者,如果要想接收某個事件,它必須對該事件的發生者說一聲:嗨,哥們,有事吱一聲。這個過程相當與在事件

關於JAVA事件分發和機制實現的程式碼例項-絕對原創實用

轉載:http://blog.csdn.net/5iasp/article/details/37054171 謝謝博主 ====================================================================

java的key事件機制

com java.awt imp package 時間 ext javax .get pri package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; im

Java 事件機制

add import userdata 開發人員 util ner dns pre sta 看項目代碼時遇到了好多事件監聽機制相關的代碼。現學習一下: java事件機制包含三個部分:事件、事件監聽器、事件源。 1.事件:繼承自java.util.EventO

Java事件機制

void 初始化 release vax 輸入 logs p s get location 鼠標事件監聽機制的三個方面: 1.事件源對象:   事件源對象就是能夠產生動作的對象。在Java語言中所有的容器組件和元素組件都是事件監聽中的事件源對象。Java中根據事件的動作來區

<Java>按鈕事件實現方式

方式 log undle 必須 AC listen oncreate ava creat 一:事件處理機制要通過以下三個不同對象來實現: (1)事件源:事件發生的場所,通常為產生事件的組件。 (2)事件對象:封裝在組件上發生的特定事件。 (3)事件監聽對象:負責監聽事件源發

java事件機制,spring的event listener模式和解耦

event,listener是observer模式一種體現,在spring 3.0.5中,已經可以使用annotation實現event和eventListner裡。我們以spring-webflow裡的hotel booking為例,看一下實現,步驟如下:1,建立eve

Android實現ScrollView的滾動事件

Android中實現ScrollView的滾動事件監聽 最近在自己實現一個類似Pinterest瀑布流展示效果的元件,GitHub上其實有類似專案,比如PinterestLikeAdapterView、PinterestListView,但都或多或少有些不足(詳見這篇文章的分析),然

JAVA 使用Interface 實現自己的事件

上班沒什麼事做,看了一下同事的程式碼。覺得挺有意思,於是拿出來分享一下,當然這不是什麼很難得技術,很多人都能夠呀看得懂。所以這一次也是很輕鬆的學習。 對於介面,我們使用最多的莫過於在設定控制元件的點選事件中了,例如: view.setOn

JAVA GUI介面程式設計實現樹節點的事件

一、建立滾動條容器,將該容器新增到當前框架。(因為樹模型需要在滾動條中才能顯示完全)JScrollPane scrollPane = new JScrollPane(); 二、建立樹模型JTree tree = new JTree(); DefaultMutableTreeN