首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

javabean 的一个用法 && 2

2012-10-28 
javabean 的一个用法 && 二?JavaBean ,以前也有看过,和事件模式差不多,但在触发事件的时机不同,至于javabe

javabean 的一个用法 && 二

?JavaBean ,以前也有看过,和事件模式差不多,但在触发事件的时机不同,至于javabean的特性方面,,可以去googleg 一下

而javabean 的事件模型,和awt中的事件处理差不多,

删除事件监听-------->>>> 事件源(JavaBean) ------->> 添加事件监听

在setXXX()时,发出事件,

由相应的事件监听者来处理事件 。

,下面直接来看一个例子:

package org.com.javabean2;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import javax.swing.JButton;import javax.swing.JFrame;public class JbuttonTest  implements ActionListener , PropertyChangeListener{ JButtonBean jbb = new JButtonBean() ; JButton jb = new JButton("Test") ;     JButton jb2 = new JButton("Test2") ;public JbuttonTest(){JFrame jf = new JFrame("JButton Test");             jb.setPreferredSize(new Dimension(60,40)) ;       Container c = jf.getContentPane();       c.setLayout(new FlowLayout()) ;       jf.add(jb) ;       jf.add(jb2) ;       jb.addActionListener(this) ;       jb2.addActionListener(this) ;       jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;       jf.setSize(300,400) ;                    jbb.addPropertyChangeListener(this) ;       jbb.setOutString("你好") ;              jf.setVisible(true) ;}   public  static void  main(String args[])   {   new JbuttonTest();          }  public void actionPerformed(ActionEvent e)   {  if(e.getSource() == jb)  {  System.out.println(e.getSource().getClass());   System.out.println("Test1111....");      jbb.setOutString(jb2.getText()) ;      // 重新调用 ;  当点两次时,就不会调用,当oldValue == newValue  时,就不会调用  }else if(e.getSource() == jb2)  {  System.out.println(e.getSource().getClass());  jbb.setOutString(jb.getText()) ;      // 重新调用 ;  }  }  @Overridepublic void propertyChange(PropertyChangeEvent evt)  {  System.out.println("old value "+evt.getOldValue());  System.out.println("new value "+evt.getNewValue());  System.out.println("property name "+evt.getPropertyName());    }}
package org.com.javabean2;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;/** * 事件源 * @author Administrator * */public class JButtonBean {public JButtonBean(){super();}PropertyChangeSupport  pcs = new PropertyChangeSupport(this) ;private String outString ;private final String  FIRE_PROPERTY_CHANGE_LISTNERER = "outString";public String getOutString() {return outString;}public void setOutString(String outString) {String oldString = this.outString ;this.outString = outString;pcs.firePropertyChange(FIRE_PROPERTY_CHANGE_LISTNERER, oldString, outString)  ;}public synchronized void  addPropertyChangeListener(PropertyChangeListener pc){pcs.addPropertyChangeListener(pc) ;}public synchronized void removePropertyChangeListener(PropertyChangeListener pc ){pcs.removePropertyChangeListener(pc) ;}}

?

?? 但对于java bean,还有其它的用法,个人觉得用事件也能替换javabean事件,不知道有没有高人知道,javabean的高级用法,或是在企业中是怎么用的,欢迎高手拍砖。

例如上面那个:

pcs.firePropertyChange(FIRE_PROPERTY_CHANGE_LISTNERER, oldString, outString)? ;
在setOutString()中触发,如果写一个事件处理,把它放在相应的地方也能达到这种效果 。

???

??

?

热点排行