2

我目前正在开发一个 ZK 应用程序,但找不到一种方法来侦听SelectEvent从一个特定以下的所有组件触发的所有 s (这是一开始就存在的唯一一个,然后在其中发生每个选择时获取后代或后代)。

此组件下方的层次结构将随每个 更改,每次SelectEvent发生这种情况时我都需要检查条件。

我唯一能想到的是

    1. 定义一个函数,它执行我需要的条件检查,另外
    2. 添加到所有后代(没有一个)事件侦听器,它们调用此函数
  1. 在进行条件检查的页面上注册一个事件侦听器。比必要时更频繁地开火,但总比不开火好。

两者都感觉不对,如果存在多个根组件,后者也不安全(因为每个根组件都有自己的一组后代)

有什么我忽略的方法吗?

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)
}

你看:用户可以创建一个TermModels 的树。在每次选择发生后,它应该检查这是否是最后可能的选择。

4

1 回答 1

0

除了使用您的第二个选项,我认为没有其他容易做到的事情。为此可以使用页面级事件侦听器。ZK 文档的参考资料在这里

于 2011-07-17T13:49:17.000 回答