Я разработал простой графический интерфейс Swing, чтобы разрешить пользователю редактировать данные моего приложения. Пользовательский интерфейс довольно прост:Слушайте переключатели вкладок на панелях JTabbedPane
- JFrame, который содержит JTabbedPane.
- Каждая вкладка состоит из одного подкласса JPanel, который предлагает инструменты для редактирования аспекта данных.
- Данные сами содержатся в одном объекте, и эта ссылка передается каждому из JPanels.
Но есть проблема: мне нужно синхронизировать разные JPanels.
Например, объект данных хранит список лиц и список задач.
Один JPanel позволяет пользователю редактировать людей. Он может создавать новых Лиц и удалять существующие.
Второй JPanel позволяет пользователю назначать людей задачам.
Обе JPanels инициализируются при первом открытии. Компоненты создаются и устанавливается макет. Теперь пользователь может начать работать с пользовательским интерфейсом.
- Он открывает первую вкладку JTabbedPane и создает первое лицо.
- Он открывает вторую вкладку. Компоненты второй вкладки инициализируются и перечисляют один человек, который доступен. Он назначает задачу.
- Он возвращается к первой вкладке и создает второго человека.
- Он переключается на вторую вкладку, чтобы иметь дело с новым человеком.
Но вторая вкладка и JPanel, которые она содержит, уже были инициализированы. Пользователь не увидит второго человека, если JPanel не будет обновлен. Я применил специальный метод обновления в моем подклассе JPanel для вкладки 2. Но как я его называю?
Мне нужно событие Swing, которое запускается на компоненте, когда оно перерисовывается.
У вас должна быть модель данных GUI, которая содержит всю информацию о человеке и задаче.Каждый JPanel будет обновляться и обновляться содержимым модели данных посредством действий контроллера. Это архитектура модели/представления/контроллера для создания графических приложений. –
Я знаю шаблон MVC. Качание сильно заставляет вас использовать его. Я пытаюсь реализовать контроллер. Мне просто нужно найти способ сообщить контроллеру, когда данные будут обновлены. Виктор Зейферт дал прекрасный ответ – lhk