2011-11-24 42 views

回答

1

你可以用两种方法做到这一点。

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