我有一个棘手的问题,可能有一个简单的答案(我希望)。
我正在使用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调整-x-y
(所以调整总和在所有情况下都是0)
显而易见的方法是为每个ValueModel添加一个侦听器,以便在每种情况下执行给定的操作。但后来我不得不担心两件事:
- 圆形度(C1中的变化触发C3中的变化然后改变C1)
- 同步:我希望有一种方法可以访问整套(C1,C2,C3),这样三个数字的总和就加起来为100。
我该怎么做?