Нет (до 1) и НОООО (до 2). По крайней мере, на мой взгляд.
Нет (до 1): во-первых, DefaultBoundedRangeModel является классом javax.swing. На мой взгляд, этим классам нет места в моделях. Например, подумайте о модели, живущей на сервере, доступ к которой осуществляется через RMI - внезапное появление класса javax.swing кажется «неправильным».
Однако реальная проблема заключается в том, что вы передаете часть своей модели (ограниченной модели) кому-то другому, не контролируя инициированные события или выполненные запросы.
Нет (до 2): Тьфу. Связывание - это весело, но (по крайней мере, на мой взгляд) следует использовать для синхронизации между моделью пользовательского интерфейса и компонентами пользовательского интерфейса, а не между моделью данных и моделью пользовательского интерфейса. Опять же, подумайте, что произойдет, если ваша модель данных будет находиться на удаленном сервере, к которому обращается RMI.
И что? Ну, это только предложение, но я бы добавил интерфейс прослушивателя событий и добавил стандартные методы подписки прослушивателя событий (addListner (...), removeListener (...)). Я бы позвонил этим слушателям из моей модели, когда у меня будут происходить обновления. Конечно, я бы обязательно задокументировал вызывающий поток (или сказал, что он не может быть определен), чтобы клиент (пользовательский интерфейс в данном случае) мог правильно синхронизироваться (invokeLater и друзья). Поскольку служба прослушивателя будет доступна контроллеру, это позволит модели жить где угодно (даже если слушатели будут вызываться удаленно или объединяться). Кроме того, это приведет к отделению модели от пользовательского интерфейса, что позволит создавать больше моделей, содержащих ее (переводчики / декораторы / зависимые модели).
Надеюсь, это поможет.