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

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

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

    隨筆 - 3, 文章 - 0, 評(píng)論 - 9, 引用 - 0
    數(shù)據(jù)加載中……

    java.beans.PropertyChangeSupport小解!

    大家好!好不容易學(xué)了一段時(shí)間的rcp,可是為了考試,幾個(gè)星期沒有寫代碼,學(xué)的一點(diǎn)也忘的差不多了。趁著暑假有時(shí)間,好好學(xué)一學(xué)。早就聽說里gef 的大名,看樣子我也不能免俗,也搞起gef起來!不知道是不是以前的基礎(chǔ)沒學(xué)好,第一個(gè)問題就是關(guān)于PropertyChangeSupport支持類的。

    簡要介紹一下,java.beans.PropertyChangeSupport是一個(gè)實(shí)用工具類,支持綁定該屬性的bean能夠使用該類。還是不多廢話了,用代碼說話。

    import ?java.beans.PropertyChangeListener;
    import ?java.beans.PropertyChangeSupport;

    public ? class ?PropertyChangeSupportTest?{

    ????
    transient ? protected ?PropertyChangeSupport?listeners? = ? new ?PropertyChangeSupport( this );

    ????
    public ? void ?addPropertyChangeListener(PropertyChangeListener?listener)?{
    ????????listeners.addPropertyChangeListener(listener);
    ????}

    ????
    protected ? void ?firePropertyChange(String?prop,?Object?old,?Object?newValue)?{
    ????????listeners.firePropertyChange(prop,?old,?newValue);
    ????}

    ????
    public ? void ?removePropertyChangeListener(PropertyChangeListener?l)?{
    ????????listeners.removePropertyChangeListener(l);
    ????}
    }
    可以看見PropertyChangeSupport的構(gòu)造方法,是將此類本身綁定到該屬性,以便他的子類也能夠使用此工具類。主要看他的第2個(gè)方法,觸發(fā)屬性變化事件(prop為綁定的屬性名,在后面的事件處理中可以根據(jù)此屬性名獲得事件處理源)
    再看看它的子類:

    public?class?BeanTest?extends?PropertyChangeSupportTest?{

    ????
    public?static?final?String?TEST?=?"test";

    ????
    private?String?name?=?"";

    ????
    public?void?setName(String?name)?{
    ????????
    if?(this.name.equals(name))?{
    ????????????System.out.println(
    "BeanTest?的?name?屬性沒有變化!");
    ????????????
    return;
    ????????}
    ????????
    this.name?=?name;
    ????????firePropertyChange(TEST,?
    null,?name);
    ????}

    ????
    public?String?getName()?{
    ????????
    return?this.name;
    ????}
    }
    BeanTest類有一個(gè)name屬性,在改變name的值時(shí),會(huì)觸發(fā)PropertyChangeEvent事件。接下來我們看看事件監(jiān)聽極其處理:

    import?java.beans.PropertyChangeEvent;
    import?java.beans.PropertyChangeListener;

    public?class?BeanTestListener?implements?PropertyChangeListener{

    ????
    public?void?propertyChange(PropertyChangeEvent?evt)?{
    ????????
    if(evt.getPropertyName().equals(BeanTest.TEST))
    ????????????System.out.println(
    "BeanTest?的?name?屬性變化!");
    ????????
    ????}
    ????
    public?static?void?main(String[]?args){
    ????????BeanTest?test?
    =?new?BeanTest();
    ????????test.addPropertyChangeListener(
    new?BeanTestListener());
    ????????test.setName(
    "fuxueliang");
    ????????test.setName(
    "fuxueliang");
    ????????System.out.println(test.getName());
    ????}

    }
    可以看到是通過evt.getPropertyName().equals(BeanTest.TEST)來確定事件源的。運(yùn)行結(jié)果如下:

    BeanTest?的?name?屬性變化!
    BeanTest?的?name?屬性沒有變化!
    fuxueliang
    /**
    ?* 當(dāng)執(zhí)行setName操作時(shí),會(huì)觸發(fā)firePropertyChange事件,
    ?* 因?yàn)镻ropertyChangeSupportTest和PropertyChangeSupport綁定
    ?* 那么在BeanTestListener中,因?yàn)樘砑永镏С诸惖谋O(jiān)聽器,所以應(yīng)該觸發(fā)propertyChange事件,
    ?* 并且會(huì)根據(jù)evt.getPropertyName()來獲得你在BeanTest中觸發(fā)事件是綁定的屬性名稱
    ?*/

    這只是分析了PropertyChangeSupport的一個(gè)方法,其余的方法大家可以一同探討。

    至于監(jiān)聽器的機(jī)制大家可以參看陳剛的《eclipse從入門到精通》,里面有一個(gè)登錄監(jiān)聽的實(shí)現(xiàn)。

    以上只是本人的一點(diǎn)粗略見解,有不對(duì)的地方還請(qǐng)指正。由于這是本人第一次寫這種文章,在表達(dá)幾措辭方面可能有所欠缺,在以后的帖子中一定盡力改正,故請(qǐng)?jiān)彛?*? _ *

    posted on 2006-07-18 14:02 nick 閱讀(3860) 評(píng)論(4)  編輯  收藏 所屬分類: RCP & GEF

    評(píng)論

    # re: java.beans.PropertyChangeSupport小解!  回復(fù)  更多評(píng)論   

    學(xué)習(xí)了,3Q
    2007-10-15 21:12 | 步行者

    # re: java.beans.PropertyChangeSupport小解!  回復(fù)  更多評(píng)論   

    public static final String TEST = "test";

    應(yīng)該是
    public static final String TEST = "name";
    2008-03-10 11:08 |

    # re: java.beans.PropertyChangeSupport小解!  回復(fù)  更多評(píng)論   

    觀察者模式
    2008-08-21 17:03 | jadcoon

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国内精自视频品线六区免费| 国产黄在线观看免费观看不卡| 色天使亚洲综合在线观看| 中国一级特黄高清免费的大片中国一级黄色片 | 一区二区视频免费观看| 亚洲AV日韩精品一区二区三区| 亚洲一久久久久久久久| 日本一区免费电影| 亚洲图片激情小说| 日韩伦理片电影在线免费观看| 鲁啊鲁在线视频免费播放| 九月婷婷亚洲综合在线| 亚洲AV无码AV男人的天堂不卡| 美女网站在线观看视频免费的 | 日韩在线观看免费完整版视频| 99久热只有精品视频免费观看17| 国产乱子影视频上线免费观看| 久久久久亚洲AV无码观看| 亚洲免费在线观看| 亚洲国产美女精品久久久久∴| 国产产在线精品亚洲AAVV| 亚洲综合免费视频| 亚洲精品卡2卡3卡4卡5卡区| 香蕉免费一区二区三区| 亚洲女同成人AⅤ人片在线观看| 亚洲国产一区二区三区在线观看| 国产成人免费午夜在线观看| 久久综合九九亚洲一区| 国产精品黄页免费高清在线观看| 亚洲国产精品不卡在线电影| 免费国产污网站在线观看| 亚洲情a成黄在线观看| 国内精品久久久久影院免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲一级毛片免费看| 国产精品亚洲一区二区无码| 亚洲人成网亚洲欧洲无码久久| 日本系列1页亚洲系列| 日本19禁啪啪无遮挡免费动图| 国产成人高清精品免费观看| 亚洲综合激情九月婷婷|