王朝网络
分享
 
 
 

Beans Development Kit (BDK)分析(五)

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

四.BDK工具类

从Jar文件的操作到ClassLoader,从Applet类的制作到Bean的Applet封装,从类的编译到辅助信息的显示,从Bean的封装到各种类型的属性编辑器,从封装事件信息到串行化对象的各种操作实现。所以我将工具类进行分类以后再进行分析:

1.Jar文件操作

Jar文件的操作包括:

l JarAccess.java 该类实现了一个简单的使用jar文件格式来创建文件的工具

l JarEntrySource.java 用于请求创建jar文件

l JarInfo.java 代表一个载入的jar文件,包含该文件的信息

l JarLoader.java 读取jar文件的内容

l Manifest.java 代表jar文件的Manifest信息

2.Applet相关

l AppletClassGenerator 为Applet自动产生Applet类代码

l AppletGenerator.java 由组合的Beans产生Applet的jar文件

l MakeAppDlg.java 要求制作Applet的对话框

3.属性编辑器

l PropertyCanvas.java 支持在一个Canvas上画出一个属性值,有三个成员变量,值得注意的是PropertyEditor的一个对象来实现编辑。在public void mouseClicked(MouseEvent evt)方法中使用了PropertyDialog来获取新的设置。

l PropertySelector.java 用来支持属性编辑器的标签选择,同样是使用PropertyEditor的一个对象来实现编辑。

l PropertyText.java 用来支持属性编辑器的文本输入,同样是使用PropertyEditor的一个对象来实现编辑。

l PropertyDialog.java 用一般的编辑器来持属性编辑器。

PropertyHookupManager.java

用来管理属性之间的钩子,以便于一个对象上属性的变化能够传递给和它相关的属性。它有一个成员变量就是Hashtable的一个实例,用来PropertyHookup对象和事件源的映射。

l public synchronized static void attach(Wrapper sourceWrapper, String propertyName, Method getter,

Wrapper targetWrapper, Method setter)

从这个方法的参数就可以看到大概的功能。就是将源时间对象的属性名,方法和目标对象的相应方法相联系。在实现过程使用了PropertyHookup来保存每一对联系。

l PropertyNameDialog.java 属性对话框用来查找一个给定的源对象的属性。

4.Bean的封装

Wrapper.java

用于跟踪在设计窗口的每个Bean在BeanBox中的相关状态,这是BDK的Bean封装中最重要的类。它继承了Panel,实现了Serializable, MouseListener, MouseMotionListener接口。

l public Wrapper(Object bean, String beanLabel, String beanName)首先检查了参数,判断是否是可显示的,如果不可显示,使用OurLabel进行封装成可见的Component;然后加入当前Panel;最后执行初始化方法initialize()和加载事件监听器的方法attachListeners()。

l void initialize()首先再次确保不可见的Bean的不可见性;获取该Bean的所有事件描述;检查目标事件向量是否存在,如果不存在则创建新的目标事件向量和属性目标向量;最后通过目标事件向量获取属性目标向量。

l private Vector getWPEIfromWET(Vector wets)该方法的功能就是通过目标事件向量获取属性目标向量。具体实现是通过列举目标事件向量的每一个事件,取出每个事件的WrapperEventTarget,如果WrapperEventTarget的成员变量targetListener是PropertyHookup的一个实例,那么获得该PropertyHookup对象,由此得到该对象的和这个属性相关的事件PropertyHookupTargets向量,然后封装成WrapperPropertyEventInfo对象的向量集合返回。

l public String getAdderName(String eventSetName)获取事件集合中添加监听器方法的名字

l public String getRemoverName(String eventSetName) 获取事件集合中删除监听器方法的名字

l public WrapperEventInfo[] getEventHookupInfo()获取WrapperEventInfo信息。首先,它统计了钩子信息的总数;然后列举了eventTargets所有的WrapperEventTarget,然后用此创建了WrapperEventInfo数组。又列举了propertyTargets的所有元素,添加新的WrapperEventInfo数据。

l void removeListeners()临时的删除所有的事件监听器。

l void attachListeners()重新加入所有的事件监听器

l void cleanup()当封装类被从BeanBox剪切下来的时候调用

l public void setFromPrototype(boolean b)设置对象是否从序列化中得到

l public Vector getChangedProperties()用于获取设计时期的属性变化的向量

l public Vector getChangedProperties()该静态方法用于映射一个AWT控件到一个与之相联系的封装对象

l public void paint(Graphics g)重写了paint方法

l public synchronized void doMouseStuff(MouseEvent evt)用于处理在移动或者改变大小的时候其鼠标的操作

l final BeanBox getBeanBox()获取BeanBox的实例

l static void showInvisibleBeans(boolean show)设置是否显示不可见的Bean

l public boolean handleEvent(Event evt)用于支持旧式的事件处理

l private static synchronized void getHashBars(Component c)

WrapperEventInfo.java

事件监听器的钩子信息,用来描述封装的事件的具体信息,包括目标Bean,适配器的类名和事件集名字。在构造函数中,需要指明目标Bean,适配器的类名和事件集名字。

WrapperPropertyEventInfo.java

继承了WrapperEventInfo类,用于当连接到一个具体的属性,即使用"sunw.beanbox.PropertyHookup"指定为钩子,"propertyChange"指定为事件集名字。增加了设置者的名字,类性和属性的名字这三个类成员变量。在构造函数中,需要指明目标Bean,属性名字和方法。

l private String initStringFromType(Class[] klass)用于将一个Class对象的数组转换为一个类名的字符串数组

HookupManager.java

管理事件源bean和目标bean的目标方法之间的钩子,将为每一个钩子都产生一个类,作为适配器编译加载到ClassLoader

l EventTargetDialog.java 用来为焦点Bean定制事件的对话框

l Report.java 从一个给定的Bean类提取内部信息的报告

PropertyHookup.java

PropertyHookup类实现了PropertyChangeListener和Serializable接口。它的两个成员变量一个是源对象,一个是和属性名字相应的PropertyHookupTargets对象的向量。

l public void attach用来创建一个属性钩子,以便于绑定了名字的属性的改变能够从源对象转向调用目标对象的设置方法。

l synchronized public void propertyChange(PropertyChangeEvent evt)该方法用于绑定在源对象的属性发生变化时能够调用。我们已经映射了该属性对应一系列目标对象,然后只要调用每一个目标的setter类方法即可。

内部类PropertyHookupTarget用于传递目标信息。实现了Serializable接口,拥有两个成员变量,一个是目标对象,一个是记录setter的Method对象。

l private void writeObject(ObjectOutputStream s)

l private void readObject(ObjectInputStream s)为用于支持串行化的方

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有