Я разработал простой графический интерфейс Swing, позволяющий пользователю редактировать данные моего приложения. Пользовательский интерфейс довольно прост:
- JFrame, содержащий JTabbedPane.
- Каждая из вкладок состоит из одного подкласса JPanel, который предлагает инструменты для редактирования аспекта данных.
- Сами данные содержатся в одном объекте, и каждой из панелей JPanel передается ссылка.
Но есть проблема: мне нужно синхронизировать разные панели JPanel.
Например, объект данных хранит список лиц и список задач.
Одна JPanel позволяет пользователю редактировать людей. Он может создавать новых лиц и удалять существующих.
Вторая JPanel позволяет пользователю назначать людей для выполнения задач.
Обе панели JPanel инициализируются при первом открытии. Компоненты созданы, макет установлен. Теперь пользователь может начать работать с пользовательским интерфейсом.
- Он открывает первую вкладку JTabbedPane и создает первого человека.
- Он открывает вторую вкладку. Компоненты второй вкладки инициализированы и содержат список одного доступного человека. Он ставит задачу.
- Он возвращается к первой вкладке и создает второго человека.
- Он переключается обратно на вторую вкладку, чтобы разобраться с новым человеком.
Но вторая вкладка и содержащаяся в ней JPanel уже инициализированы. Пользователь не увидит второго человека, пока JPanel не будет обновлен. Я реализовал собственный метод обновления в своем подклассе JPanel для вкладки 2. Но как мне его вызвать?
Мне нужно событие Swing, которое запускается для компонента при его перерисовке.