javabean事件監聽

          Posted on 2007-06-01 16:26 第五正 閱讀(626) 評論(1)  編輯  收藏 所屬分類: JAVA

          javabean事件監聽例子
          我使用JAVA開發項目 也剛剛只有半年多的時間吧 根本提不上什么經驗 總是從網上找別人的代碼和例子看 但自己卻從未上傳過什么東西給別人看 而且最近發現找到的精華都是別人的BLOG里寫的內容 一時感覺不錯 我也把自己的學習記錄搞上去吧

          首先這個例子 我做了4個類 分別是

          1 TestListener類 這個類是我們自己寫的監聽服務

           1 import java.beans.PropertyChangeListener;
           2 import java.beans.PropertyChangeSupport;
           3 
           4 
           5 public class TestListener{
           6 
           7  PropertyChangeSupport listeners = new PropertyChangeSupport(this);
           8  
           9      //添加監聽器
          10      public void addPropertyChangeListener(PropertyChangeListener l) {
          11          listeners.addPropertyChangeListener(l);
          12      }
          13 
          14      //觸發屬性改變的事件
          15      protected void firePropertyChange(String prop, Object old, Object newValue) {
          16          listeners.firePropertyChange(prop, old, newValue);
          17      }
          18 
          19      //觸發結構改變的事件
          20      protected void fireStructureChange(String prop, Object child) {
          21          listeners.firePropertyChange(prop, null, child);
          22      }
          23 
          24      //刪除監聽器
          25      public void removePropertyChangeListener(PropertyChangeListener l) {
          26          listeners.removePropertyChangeListener(l);
          27      }
          28 }
          29 
          30 

           

          2 TestPropertyChangeListener類  這個是一個監聽器類 是用來監聽TestListener類的

           

           1import java.beans.PropertyChangeEvent;
           2import java.beans.PropertyChangeListener;
           3
           4public class TestPropertyChangeListener implements PropertyChangeListener{
           5 
           6 public void propertyChange(PropertyChangeEvent evt) {
           7  System.out.println(evt.getNewValue());
           8  System.out.println(evt.getOldValue());
           9  System.out.println(evt.getPropagationId());
          10  System.err.println(evt.getPropertyName());   //這個就是接受過來的標識 
          11  Object j = evt.getSource();   //經過轉型可以得到 完整的Bean對象
          12  System.out.println("JY:PropertyChangeListener");
          13  
          14  
          15 }

          16
          17}

          18
          19


          3 Bean類 這個類很簡單的 就是很簡單的JAVABEAN

           

           1public class Bean extends TestListener{
           2
           3 private String name;
           4 private String pwd;
           5 public String getName() {
           6  return name;
           7 }

           8 public void setName(String name) {
           9  String old = this.name;
          10  this.name = name;
          11  firePropertyChange("name",old,name); 
          12  //第一個參數 是標識號 我們可以通過這個來判別是哪里觸發  了事件
          13
          14 }

          15 public String getPwd() {
          16  return pwd;
          17 }

          18 public void setPwd(String pwd) {
          19  String old = this.pwd;
          20  this.pwd = pwd;
          21  firePropertyChange("pwd",old,pwd);
          22 }

          23 
          24}

          25
          26


          4 Test類 執行類

           

           1public class Test {
           2 
           3 public static void main(String[] args) {
           4  Bean n = new Bean();
           5 //把我們做好的 監聽器 增加給javabean對象 
           6 n.addPropertyChangeListener(new TestPropertyChangeListener());
           7 //當SETNAME的時候 就會觸發  監聽器 中的方法
           8 n.setName("a");
           9  n.setPwd("sdf");
          10 }

          11}

          12
          13

          我自己想了一下   其實JAVA所有的監聽機智 好象都是這樣子實現的 比如按鈕那些

          我開始特別不理解 按鈕的那些事件是怎么回事   現在終于有點明白了 

          這是我寫的第一篇東東   雖然都是很淺的東西   但還是希望大家能夠喜歡   并且對大家有點幫助

           

          Feedback

          # re: javabean事件監聽  回復  更多評論   

          2008-10-18 14:26 by zhangw
          好的。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 2, comments - 9, trackbacks - 0, articles - 0

          Copyright © 第五正

          主站蜘蛛池模板: 陆丰市| 工布江达县| 托里县| 乌兰浩特市| 彰化市| 滨州市| 阜新市| 大方县| 丰城市| 福贡县| 迁安市| 观塘区| 南京市| 紫金县| 永登县| 深州市| 泗洪县| 汪清县| 余江县| 高青县| 铁力市| 宁远县| 邮箱| 维西| 青铜峡市| 轮台县| 佛冈县| 乳山市| 吉林省| 阿尔山市| 根河市| 伊宁县| 平和县| 通辽市| 象州县| 垣曲县| 浏阳市| 苗栗市| 原平市| 涡阳县| 云龙县|