Java Hashandler在gwt中是什么意思
我无法理解GWT中Java Hashandler在gwt中是什么意思,java,events,gwt,handler,Java,Events,Gwt,Handler,我无法理解GWT中Has****Handlers接口的含义。如果类实现了hasClickHandler(addClickHandler)和ClickHandler(onClick)接口,那么会有什么区别 谢谢HasClickHandler用于生成单击事件的对象。ClickHandler用于处理事件的对象 例如,按钮将生成单击事件。当您想要处理单击事件时,您可以创建一个包含执行此操作的代码的ClickHandler。将此ClickHandler注册到Button对象,以便在单击发生时,按钮知道该告
Has****Handlers
接口的含义。如果类实现了hasClickHandler
(addClickHandler
)和ClickHandler
(onClick
)接口,那么会有什么区别
谢谢HasClickHandler用于生成单击事件的对象。ClickHandler用于处理事件的对象
例如,按钮将生成单击事件。当您想要处理单击事件时,您可以创建一个包含执行此操作的代码的ClickHandler。将此ClickHandler注册到Button对象,以便在单击发生时,按钮知道该告诉谁。HasClickHandlers接口由Button(通过FocusWidget父类)实现,它只是注册ClickHandlers的接口。此界面只是对ClickHandlers的注册进行了标准化。
具有ClickHandlers
——可以单击的东西,例如按钮
ClickHandler
-一些在单击时处理的代码
HasClickHandlers
对象是一个小部件,类似于按钮,当用户单击它时可以做出反应。但是按钮本身并不知道当用户点击它时会发生什么。开发人员可以创建一个ClickHandler
对象,该对象是一些代码,用于实现当用户单击该按钮时应该发生的事情。可以为按钮提供一个ClickHandler
,以对用户的单击做出反应,即按钮可以拥有/持有一个ClickHandler-HasClickHandler
有人可能会问,为什么GWT说应用程序应该定义具有方法签名的视图接口,如:
HasClickHandlers getSaveButton();
而不是简单地
Button getSaveButton();
谷歌主张将视图与演示者分离。演示者通常很少关心按钮的所有功能—它通常只关心按钮是否可以接受单击处理程序并使用它。像HasClickHandler
这样的界面只有很少的方法,很容易模仿。然而,使用真正的按钮有时需要初始化整个UI框架的部分或部分,并实例化必要的上下文类,以便创建用于测试的按钮
通过让界面返回HasClickHandler
而不是按钮
,演示者的单元测试代码可以通过简单地模拟像HasClickHandler
这样的界面,完全脱离UI框架的复杂性。这意味着更简单的测试框架和非常快速的单元测试(因为您没有初始化UI框架/与UI框架交互的开销)
编辑 OP提问:
好的,例如,如果ABC类实现了HasClickHandler和Clickhandler,然后是onClick和addClickHandler(返回HandlerRegistration),这意味着1)它将通过onClick方法对click事件进行操作,2)将让任何其他类知道(谁在实现Clickhandler并使用ABC类的addClickHandler来注册事件)那次点击刚刚发生?对吧? 像
ABC
这样的类不会实现hascackHandlers
。只有像按钮这样的GWT小部件实现了HasClickHandlers
。Google只是提供了HasClickHandlers
界面,作为声明对按钮等小部件的变量引用的替代方法。这些小部件将通知registeredClickHandler
有关按钮单击的信息
您的类ABC
可能实现ClickHandler
,或者可能包含从ClickHandler
派生的内部(可能是匿名)类。典型用法如下所示:
public class ABC {
...
getSaveButton().addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
saveToDatabase();
}
}
}
...
好的,例如,如果ABC类实现了HasClickHandler和Clickhandler,然后是onClick和addClickHandler(返回HandlerRegistration),这意味着1)它将通过onClick方法对click事件进行操作,2)将让任何其他类知道(谁在实现Clickhandler并使用ABC类的addClickHandler来注册事件)那次点击刚刚发生?正确的?