私は現在 ZK アプリケーションを開発していますが、SelectEvent
特定の 1 つ以下のすべてのコンポーネントから起動されたすべての s をリッスンする方法を見つけることができませんでした (これは最初に存在する唯一のものであり、その中で行われるすべての選択で子孫を取得します)または子孫)。
このコンポーネントの下の階層は ごとSelectEvent
に変化するので、その都度状況を確認する必要があります。
私が考えることができる唯一のものは
- 必要な条件チェックを行う関数を定義し、さらに
- この関数を呼び出すすべての子孫 (存在しない) イベントリスナーに追加します
- 条件チェックを行うページにイベントリスナーを登録します。必要以上に頻繁に発火しますが、まったく発火しないよりはましです。
どちらも適切ではなく、複数のルート コンポーネントが存在する場合、後者は安全ではありません (これらのそれぞれに独自の子孫のセットがあるため)。
私が見落としている方法はありますか?
PS: これは、この質問の ZK バージョンです。
いくつかのコード。ExpressionTypeSelector
には、Listbox
を選択するためのが含まれています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
。選択が行われるたびに、これが最後の可能な選択であったかどうかを確認する必要があります。