У меня сложный вопрос, на который, вероятно, есть простой ответ (я надеюсь).
Я использую 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.
Как я могу это сделать?