我目前正在开发一个 ZK 应用程序,但找不到一种方法来侦听SelectEvent
从一个特定以下的所有组件触发的所有 s (这是一开始就存在的唯一一个,然后在其中发生每个选择时获取后代或后代)。
此组件下方的层次结构将随每个 更改,每次SelectEvent
发生这种情况时我都需要检查条件。
我唯一能想到的是
- 定义一个函数,它执行我需要的条件检查,另外
- 添加到所有后代(没有一个)事件侦听器,它们调用此函数
- 在进行条件检查的页面上注册一个事件侦听器。比必要时更频繁地开火,但总比不开火好。
两者都感觉不对,如果存在多个根组件,后者也不安全(因为每个根组件都有自己的一组后代)
有什么我忽略的方法吗?
PS:这是这个问题的ZK版本。
一些代码。ExpressionTypeSelector
包含 a以Listbox
选择 a ExpressionModel
。在选择时,模型的小部件会替换 的ExpressionTypeSelector
小部件。
主要的:
expressionSelector = new ExpressionTypeSelector()
expressionSelector.widget.setParent(layout)
TermModel
(一个例子ExpressionModel
)
class TermModel extends ExpressionModel[BooleanTerm] {
val b1 = new ExpressionTypeSelector
val op = new OperatorSelector
val b2 = new ExpressionTypeSelector
var widget = new Hlayout
for (w ← List(
new Label("("),
b1.widget,
op.widget,
b2.widget,
new Label(")")
)) w.setParent(widget)
}
你看:用户可以创建一个TermModel
s 的树。在每次选择发生后,它应该检查这是否是最后可能的选择。