我有一个棘手的问题,可能有一个简单的答案(我希望如此)。
我正在使用 JGoodies Binding 将滑块绑定到ValueModel;效果很好。
假设我有以下(人为的)情况,我想模拟购买巧克力和焦糖,我有 1.00 美元和以下 UI 指标
- 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 添加一个侦听器,以在每种情况下采取给定的操作。但是我不得不担心两件事:
- 循环性(C1 的变化触发 C3 的变化,然后 C1 的变化)
- 同步:我想要一种访问完整集合(C1、C2、C3)的方法,使得三个数字的总和为 100。
我怎样才能做到这一点?