JGoodies Binding + ограничения: как этого добиться? - PullRequest
1 голос
/ 06 января 2012

У меня сложный вопрос, на который, вероятно, есть простой ответ (я надеюсь).

Я использую JGoodies Binding для привязки ползунка к ValueModel ;отлично работает.

Предположим, у меня есть следующая (надуманная) ситуация, когда я хочу смоделировать покупку конфет и карамели, и у меня есть 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 для получения заданного значения.действия в каждом конкретном случае.Но тогда мне нужно беспокоиться о двух вещах:

  • округлость (изменения в триггере C1, изменения в C3, которые затем изменяют C1)
  • синхронизация: я хочу иметь средство доступа кполный набор (C1, C2, C3) такой, что сумма трех чисел складывается до 100.

Как я могу это сделать?

...