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()) ;      // 重新调用 ;
	  }
  }
  
@Override
public 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()中触发,如果写一个事件处理,把它放在相应的地方也能达到这种效果 。

   

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值