おそらく簡単な答えがある難しい質問があります(願っています)。
JGoodies Binding を使用して、スライダーをValueModelにバインドしています。よく働く。
チョコレートとキャラメルの購入をモデル化したい次の (不自然な) 状況があり、次の UI インジケーターで $1.00 を持っているとします。
- C1 = 「キャラメル」スライダー = キャラメルキャンディーの予算 = 0 ~ 50 セント
- C2 = 「チョコレート」スライダー = チョコレート菓子の予算 = 0 ~ 50 セント
- C3 = 「変更」スライダー = 残りの残り
制約 C1+C2+C3 = 100 を強制したいので、次のようになります。
- C1 を Δx だけ上下に調整すると、C3 は -Δx だけ調整されます
- C2 を Δx だけ上下に調整すると、C3 は -Δx だけ調整されます
- C3 を Δx で上下に調整すると、C1 は y=-floor(Δx/2) で調整され、C2 は -xy で調整されます
(すべての場合で調整の合計が正確に 0 になるように)
明らかなアプローチは、各 ValueModel にリスナーを追加して、それぞれの場合に特定のアクションを実行することです。しかし、次の 2 つのことを心配する必要があります。
- 循環性 (C1 の変化が C3 の変化を引き起こし、それが C1 を変化させる)
- 同期: 3 つの数値の合計が 100 になるように、完全なセット (C1、C2、C3) にアクセスする手段が必要です。
これどうやってするの?