减少GWT自定义窗口小部件详细程度

时间:2009-05-31 12:08:26

标签: gwt

我目前的自定义小部件流程如下:

  1. 创建我的widget类 - 扩展Composite;
  2. 为此小部件创建一个侦听器界面;
  3. 创建一个侦听器集合接口 - 小部件的私有内部类;
  4. 在小部件上创建add / removeListener方法;
  5. 在窗口小部件中,触发侦听器上的事件。
  6. 我的听众会触发细粒度的事件,例如onEntityDisplayRequested(Entity entity),因此我无法使用股票监听器。

    虽然这实现了小部件的低耦合并允许重复使用,但它非常冗长。有没有更好的方法来处理自定义小部件的设计?

2 个答案:

答案 0 :(得分:3)

每个新窗口小部件都不需要单独的侦听器接口。例如。 ClickListener由各种不同的窗口小部件类使用。显然,一些自定义小部件需要一个新的监听器类型,但这不应该是自动的。

答案 1 :(得分:2)

我认为Java不久前遇到了同样的问题,解决方案就是拥有PropertyChange事件。他们来了 - PropertyEvent,包含源,属性名称和旧的+新值 - 一个PropertyChangeListener - 一个PropertyChangeSupport,您可以委派事件触发,以及注册和取消注册侦听器。

你松散了一点特异性(事件的名称与字符串相匹配),但你仍然可以触发细粒度事件并获得一些外部类支持。

我没有在GWT中广泛使用这个,所以我不能评论效率方面。