Похожие презентации:
Оконные приложения на Java (ООП)
1.
Оконные приложения на Java (ООП)• Ядро ОС (оконная библиотека) – источник событий GUI
• Планировщик – выполняет код (runnable), переданный в событии в потоке
графического интерфейса (GUI Thread). Синхронизация событий.
• Базовый класс окна JFrame
• Производный класс окна – функциональное наполнение окна
• Класс элемента управления – кнопки (JButton)
• Интерфейс обработчика событий ActionListener
• Вложенный анонимный класс - расширение ActionListener, работает в
контексте окна
• JComponent – базовый класс элементов управления (компонент), окно
владеет вектором компонент
2.
Сценарий3.
Сценарий1. Создание объекта оконного класса MyFrame
2. Конструирование Jframe – базового класса окна
3. Оконный класс создает
объект JButton, устанавливает размеры,
сохраняет ссылку у себя
4. Оконный класс передает ссылку на JButton
базовому классу, тот
запоминает в векторе компонент
5. Создает объект анонимного класса обработчика, расширение
ActionListener с кодом обработки события
6. «Навешивает» обработчик событий на кнопку
7. При выполнении клика по изображению кнопки - ядро ОС (графическая
библиотека) фиксирует «клик по поверхности окна с координатами X,Y»
8. Обработчик событий ядра в приложении создает событие
9. Событие ставится в очередь к планировщику
10. При извлечении из очереди планировщик «пробуждает» поток GUI и
передает ему событие
11. Код в потоке GUI передает событие базовому классу окна
12. Класс окна находит компонент, на который попадают координаты клика
13. Выбирается ссылка на обработчик события этого класса
14. Через интерфейс вызывается код в обработчике событий – объекте
анонимного класса
15. Обработчик выбирает элемент списка – код компонента порождает
событие
4.
Сценарий16. Событие ставится в очередь к планировщику
17. 18. Завершается обработчик событий клика
19. Поток GUI пробуждает планировщик и засыпает
20. Планировщик выбирает событие – выбор в списке….
Замечания:
• если оконный класс выполняет продолжительное действие, запуская его
в отдельном потоке, то по завершении этого действия или любой
необходимости коммуникаций с компонентами оконного класса
(нормальное завершение, перехват исключения в потоке, передача
сообщения) необходимо запланировать соответствующее действие в
потоке GUI. Для этой цели в разных средах исполнения существуют либо
статические методы обращения к планировщику, либо методы в оконном
классе (Android)
• при обработке асинхронного ответа от внешней службы (класс)
необходимо, чтобы методы асинхронного ответа «приходили» в потоке
GUI. В противном случает, см. выше….
• Android при обращении к методам оконного класса (Activity) и его
компонент из постороннего потока генерирует исключение
5.
Синхронизация с потоком GUI6.
NetBeans IDEСкрытый код генерации разметки