基于SW T控制反转,事件监听如何实现?

使用控制反转 (IoC) 的设计思想,运用 XML 语言来描述 SWT 的用户界面
求详解

采用命令模式
首先定义一个命令接口,并定义exe方法。
然后将事件发生之后的动作交给不同的类来执行,这些类都必须实现命令接口,而且都要在xml配置文件中定义。

在界面初始化时,根据xml文件初始化事件监听器。有两种方式:
1.定义一个集合,保存组件和命令全限定名的映射。然后将所有组件的监听器都指向一个commandmanager类,当事件发生时,commandmanager根据事件发生源从集合取出对应的全限定类名,然后class.forname动态加载它,最后调用命令模式的方法(前面定义的接口就是为了这个)。

2.跟1差不多,只是集合保存的不是全限定类名,而是许多的action。

这样实现了解耦合,我们只关心对应组件发生事件之后我们将要采取的动作,而像注册事件监听器等等工作我们无需再做。这样描述出来的界面很清晰,也很容易维护。 :D

比如一个菜单:
[code="java"]


[/code]

代码有点乱,将就看吧。
里面还可以塞更多的属性,当然这要决定你是否需要用到它们。

不明白神马叫做“怎么调用事件”,value="com.javaeye.cantellow.client.command.GeneralDialogCommand",这个就代表点击了菜单后,后面的操作交给此类处理。

对,肯定要解析xml,这个很容易。

做Demo的话,我现在手头没那么多时间
我给你写一段思路吧。
构建菜单时:
读取xml,根据标签中的属性初始化,将value中的值,和对应的component放在一个hash表中,保存起来。然后将所有的菜单的事件监听器都注册成为commandmanager,当事件发生时:
1.得到事件源
2.从hash表中找到全限定类名
3.class.forname动态加载
4.调用command接口方法exe,执行。
下面的事情就交给你自定义的类来处理了。

不知道这样你还明白么? 8) 8)