2016-04-28 5 views
0

Может кто-нибудь объяснить, какая цель EventQueue объект служит в Java Swing?Может ли кто-нибудь объяснить, для чего предназначена функция EventQueue?

Я в основном смущен тем, как применяются события очередности. Возможно, было бы полезно использовать обычное использование очереди событий.

+0

* «.. Объект EventQueue служит в Java Swing?» * Хотя Swing использует его, «EventQueue» - от AWT. –

+0

В большинстве случаев вы не взаимодействуете с «EventQueue». «EventQueue» представляет собой очередь событий, которая обрабатывается Thread Dispatching Thread, эти события доставляются компонентам и заинтересованным сторонам для уведомления о чем-то происходящем, например, о щелчке мыши или событии на клавиатуре. «EventQueue» предоставляет концепцию «порядок», где события могут возникать только линейно, один за другим и, как правило, в течение последовательности, упорядоченной по порядку (так что мой ключевой штрих не может сделать ставку на мое событие мыши, если я сначала переместил мышь) – MadProgrammer

ответ

2

Поскольку Swing является single threaded, он использует EventQueue держать экземпляры Runnable так, чтобы они могли быть посланы последовательно и в порядке размещены, независимо от того, порожденной системы или программой. Использование sine qua non является отправкой события через EventQueue.invokeLater(), что гарантирует, что объекты Swing GUI будут сконструированы и обработаны только на event dispatch thread. Вы можете заменить AWT EventQueue своей собственной реализацией, как показано на рисунке here, чтобы увидеть события по мере их размещения в очереди.