中华网通行证
用户名 密码

JavaBeans 程序开发基础教程(1)
中华网科技 http://tech.china.com 2005-07-20 11:42:27
进入BBS】【进入聊天室】【 推荐给朋友 】【浏览字号: 】【关闭窗口

  JavaBeans的属性

  JavaBeans的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量。在JavaBeans设计中,按照属性的不同作用又细分为四类:Simple, Index, Bound与Constrained属性。

1. Simple属性

  一个简单属性表示一个伴随有一对get/set方法(C语言的过程或函数在Java程序中称为"方法")的变量。属性名与和该属性相关的get/set方法名对应。例如:如果有setX和getX方法,则暗指有一个名为"X"的属性。如果有一个方法名为isX,则通常暗指"X"是一个布尔属性(即X的值为true或false)。例如在下面这个程序中:

public class alden1 extends Canvas {
string ourString= "Hello"; //属性名为ourString,类型为字符串
public alden1(){     //alden1()是alden1的构造函数,与C++中构造函数的意义相同
setBackground(Color.red);
setForeground(Color.blue);
}
/* "set"属性*/
public void setString(String newString) {
ourString=newString;
}
/* "get"属性 */
public String getString() {
return ourString;
}
}


2. Indexed属性

一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。例:
public class alden2 extends Canvas {
int[] dataSet={1,2,3,4,5,6}; // dataSet是一个indexed属性
public alden2() {
setBackground(Color.red);
setForeground(Color.blue);
}
/* 设置整个数组 */
public void setDataSet(int[] x){
dataSet=x;
}
/* 设置数组中的单个元素值 */
public void setDataSet(int index, int x){
dataSet[index]=x;
}
/* 取得整个数组值 */
public int[] getDataSet(){
return dataSet;
}
/* 取得数组中的指定元素值 */
public int getDataSet(int x){
return dataSet[x];
}
}


3. Bound属性

  一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Beans,至于接收事件的Beans应做什么动作由其自己定义。当PushButton的background属性与Dialog的background属性bind时,若PushButton的background属性发生变化时,Dialog的background属性也发生同样的变化。 例:
public class alden3 extends Canvas{
String ourString= "Hello";
//ourString是一个bound属性
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
/** 注:Java是纯面向对象的语言,如果要使用某种方法则必须指明是要使用哪个对象的方法,在下面的程序中要进行点火事件的操作,这种操作所使用的方法是在PropertyChangeSupport类中的。所以上面声明并实例化了一个changes对象,在下面将使用changes的firePropertyChange方法来点火ourString的属性改变事件。*/

public void setString(string newString){
String oldString = ourString;
ourString = newString;
/* ourString的属性值已发生变化,于是接着点火属性改变事件 */
changes.firePropertyChange("ourString",oldString,newString);
}
public String getString(){
return ourString;
}
/** 以下代码是为开发工具所使用的。我们不能预知alden3将与哪些其它的Beans组合成为一个应用,无法预知若alden3的ourString属性发生变化时有哪些其它的组件与此变化有关,因而alden3这个Beans要预留出一些接口给开发工具,开发工具使用这些接口,把其它的JavaBeans对象与alden3挂接。*/

public void addPropertyChangeListener(PropertyChangeLisener l){
changes.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l){
changes.removePropertyChangeListener(l);
}

  通过上面的代码,开发工具调用changes的addPropertyChangeListener方法把其它JavaBeans注册入ourString属性的监听者队列l中,l是一个Vector数组,可存储任何Java对象。开发工具也可使用changes的removePropertyChangeListener方法,从l中注销指定的对象,使alden3的ourString属性的改变不再与这个对象有关。当然,当程序员手写代码编制程序时,也可直接调用这两个方法,把其它Java对象与alden3挂接。

首页 上页 | 1 | 2 | 3 | 4... 下页 尾页  共 4

 

50款最具性价比数码相机/MP3推荐!
作者: 来源:太平洋电脑网

发表言论:
笔  名:
查看评论
﹣相关报道

﹣精彩回顾
·揭秘越南姑娘的“性契约”(组图)
·中国研制成功银河麒麟操作系统
·近处偷拍野狮性爱 野草丛中见柔情(图)
·难得一见“水下分娩”全程跟拍(组图)
·古代性器具及性惩罚工具(组图)
·揭密中外历史上乱伦的名人们(组图)
·探秘世界各地诡异的干尸新娘(组图)
·隋唐两个王朝的九大著名"绿帽子"(组图)
·另类的惨烈:螳螂血战壁虎谁更凶猛(图)
·一分钟平静死去 注射死刑全过程(图)

进入BBS】【进入聊天室】【 推荐给朋友 】【浏览字号: 】【关闭窗口


潮流·时尚
·市场上的天价手机全搜罗
·一周降幅最大手机导购
·FM调频收音功能手机选购
·索尼爱立信三新机曝光
·诺基亚N73音乐版精品赏
·热门便携笔记本搜索导购
·近期最新上市机型大盘点
·矩阵Matrix鼠标垫细评测
·19寸20寸22寸液晶该买谁
·近期几款热卖MP3大推荐
·四大即将退市经典MP3选购
·06年最火七大DC缺点曝光
·六百万像素超值机型推荐
·诺基亚推出随身小音箱
·LG直板巧克力KG99评测
·MOTO新机即将国内上市
·超低价蓝牙手机导购
·130万像素一样拍出好照片
·诺基亚两款蓝牙耳机新品
·索爱纯美折叠机Z558评测

软件下载
·豪杰大眼睛 V2.5
·Foxmail V6.5
·天网防火墙Athena
·极品五笔 V6.8
·PPS网络电视
·超级兔子魔法设置
中华网搜索
站内搜索
全网搜索




热门搜索
耳机 印刷 手机 拖鞋
减速机 钟表 成人用品
减肥 枸杞 T恤 升降机
心理 健康 彩票 招聘
礼品 旅游 猎头 培训

产品服务
·机会!机会不容错过
·中华商机,搜索创新
·准确快捷,搜你所搜
·¥来¥往,尽在中华邮
·中华搜索,贴心搜索




科技频道主编信箱