1

我有一个棘手的问题,可能有一个简单的答案(我希望如此)。

我正在使用 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。

我怎样才能做到这一点?

4

0 回答 0