Я думаю, что у вас могут быть некоторые скрещенные провода.
- Модель наблюдаема (проверьте!)
- Вид наблюдает за моделью (проверьте!)
- Контроллер привязан к виду (TODO!)
# 3 означает, что пользовательские взаимодействия из представления должны вызывать зарегистрированного слушателя в классе контроллера, который затем обновляет состояние модели.
Это «классический» Swing MVC.
(источник: sun.com )
«Модифицированный» Swing MVC (который был рекомендован некоторыми другими ответами на этот вопрос), заставляет контроллер играть роль посредника.
В этом дизайне представление вызывает соответствующий метод на контроллере, когда пользователь выполняет действия. Затем контроллер обращается к модели (возможно, обновляет ее). Наконец, если модель изменена, она уведомляет заинтересованных слушателей (в данном случае, контроллера).
Это «модифицированный» MVC.
(источник: sun.com )
Второй дизайн («модифицированный» MVC) позволяет очень очевидное разделение модели и вида.
Для получения дополнительной информации, прочитайте эту статью о Java Swing MVC. Это фантастика.