2
我知道如果我使用匹配的id定义onClick $ id方法,我可以捕获特定的按钮或文本字段。我想要有一个通用的onClick-something和onChange-当任何按钮被点击或任何文本字段被更新时被调用的方法。 ZK框架可能吗?在ZK中,我的GenericForwardComposer类中,如何捕获所有onClick和onChange事件?
我知道如果我使用匹配的id定义onClick $ id方法,我可以捕获特定的按钮或文本字段。我想要有一个通用的onClick-something和onChange-当任何按钮被点击或任何文本字段被更新时被调用的方法。 ZK框架可能吗?在ZK中,我的GenericForwardComposer类中,如何捕获所有onClick和onChange事件?
你可以用两种方法做到这一点。
1)定义控制器上的单个事件处理程序,并将所有其他组件事件转发给该事件处理程序。例如。考虑具有3个按钮部件
<zk>
<window id="mainwin" border="normal" title="hello" apply="pkg.TestComposer">
<button id="btn1" label="Click Me 1" forward="mainwin.onClick" />
<button id="btn2" label="Click Me 2" forward="mainwin.onClick" />
<button id="btn3" label="Click Me 3" forward="mainwin.onClick" />
</window>
</zk>
在施加到包含驾驶室定义单个onClick事件处理程序如下
public void onClick() throws Exception {
Messagebox.show("Someone clicked!!!");
}
这些3个按钮组件的窗口组件控制器
即时此示例ZUML文件每个Button都可以使用forward属性并定义目标组件以及要按以下格式forward =“event-name = target-component.target-event”处理的事件。有关更多详细信息,请参阅前向属性参考here。
2)在ZK 6中,使用SelectorComposer和注解来定义事件处理程序的方式更加优雅。对于例如
@Listen("onClick = window > button")
public void onClickAnyButton() {
// ...
}
请参考this smalltalk的更多详细信息SelectorComposer