设计gwt中的子窗口小部件和父窗口小部件之间的交互

时间:2012-10-14 11:04:27

标签: gwt mvp

我正在使用gwt开发一个UI,并且要求在子窗口小部件上执行某些操作时,父窗口小部件需要采取与此相对应的操作。

例如,我有一个主面板(父窗格),它有一个子窗口小部件列表。根据对任何子窗口小部件的更改,需要更新其他窗口小部件内容。

在这种情况下要遵循的正确设计是什么,即1个选项是: - 孩子捕捉到变化事件并自行更新。将事件引发到父窗口小部件,然后更新子窗口小部件。 - 其他替代方法是让父组件中的子组件具有更改处理程序,然后父组件可以将更改传播到其他组件。

3 个答案:

答案 0 :(得分:1)

您只需要一个事件处理程序。例如:

ClickHandler h = new ClickHandler() {
    public void onClick(ClickEvent event) {
        Widget sender = (Widget) event.getSource();

             if (sender == child1) {
                // update child1
                // update child 2
             } else if (sender == child2) {
                // update child2
                // update child1
             }
        }
    }
}
parent.addDomHandler(h, ClickEvent.getType());

答案 1 :(得分:0)

我认为最好的选择是使用EventBus。简单解释如何使用它:http://tv.jetbrains.net/videocontent/gwt-event-bus-basics。 首先 - 定义子窗口小部件的事件。并由EventBus使用它们。看看这个答案:https://stackoverflow.com/a/6030379/904820

答案 2 :(得分:0)

您可以使用Child的UiHandlers以及Parent Widgets。请仔细阅读链接。 https://developers.google.com/web-toolkit/doc/latest/DevGuideUiHandlers