Этот очень простой пример и обсуждение могут оказаться полезными.
Следование MVC - очень хорошая идея. Насколько я знаю, формальной структуры Java Swing для этого не существует, все они сосредоточены на «представлении» аспекта проблемы.
Что касается структуры приложения и MVC - лучший фреймворк, который я знаю, - это Griffon. Это не Java - это Groovy, но именно это делает его более привлекательным и легким для изучения. Griffon для приложения Swing - это то же самое, что Grails для веб-приложения.
Проверьте это на http://griffon.codehaus.org/
Swing имеет относительно хорошую настройку для Архитектура MVC, но на самом деле она сочетает в себе представление и контроллер. Компоненты в Swing могут иметь прикрепленные к ним слушатели, что является аспектом контроллера, а затем из этих слушателей (которые находятся внутри компонентов) вы можете соответствующим образом изменить представление и модель. Итак, чтобы ответить на ваш вопрос, да, Swing поможет с подходом MVC к приложению Java.
В Swing у вас по-прежнему есть две отдельные части для VC: компоненты и слушатели. Причина, по которой я говорю, что они объединены, заключается в том, что каждый компонент может иметь своего собственного слушателя. Эти слушатели обычно выполняют манипуляции и являются аспектом контроллера.Компоненты предназначены не только для просмотра на экране, но и для передачи информации этим слушателям. Нажатия кнопок, нажатия клавиш, изменения фокуса, закрытие окон и т. Д. Сообщаются слушателям соответствующего компонента компонентом. Вот простой фрагмент кода для кнопки со слушателем действия, который регистрирует нажатие кнопки.
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
// Controller code
}
};
JButton button = new JButton("A Button");
button.addActionListener(buttonListener);
ActionListener
по сути является контроллером, но получение ввода от пользователя зависит от кнопки
. Вот где Swing сбивает с толку разницу между представлением и контроллером с точки зрения чистого MVC, но в то же время различие все еще сохраняется:
Слушатели - это контроллеры (минус прямая интерпретация input)
Компоненты - это представление (но интерпретируют ввод и передают его контроллеру)
Надеюсь, что это поможет :)
Был JSR (296), который описывает структуру для создания графического интерфейса Swing, но похоже, что о нем забыли, хотя посмотрите следующую статью:
http: // java .dzone.com / news / jsr-296-end-jframe
Я нашел следующие фреймворки, изначально основанные на нем, которые выглядят многообещающими:
Было бы интересно узнать, как это работает на практике. Надеюсь, они помогут.