Разница между windowAcactive и windowFocusGained - PullRequest
0 голосов
/ 18 декабря 2018

В чем главное отличие метода windowActivation (реализовано из WindowListener) и windowGainedFocus (реализовано из WindowFocusListener)?

Документация Java гласит:

windowGainedFocus:

Вызывается, когда Окно установлено как сфокусированное Окно, что означает, что Окно или один из его подкомпонентов будут получать события клавиатуры.

windowAcactive:

Вызывается, когда окно установлено, чтобы быть активным окном.Только рамка или диалог может быть активным окном.Собственная система управления окнами может обозначать активное окно или его дочерние элементы специальными украшениями, такими как выделенная строка заголовка.Активное окно всегда является либо сфокусированным окном, либо первым фреймом или диалогом, который является владельцем сфокусированного окна.

Но в чем разница?Или, как говорится, сфокусированное окно - это тип активированного окна?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Фокусированное окно - это то, которое получает ввод с клавиатуры.Активное окно обычно является окном документа, которым манипулирует пользователь.Активное окно обычно выделяется визуально, например, с помощью другой строки заголовка.

В macOS сфокусированное окно называется ключевым окном, а активное окно (может быть только одно) называется основным окном..

Различие тонкое, потому что они почти всегда являются одним и тем же окном.

Примером, в котором они различаются, может быть плавающая палитра с текстовым полем.Палитра должна быть сфокусированным окном, чтобы принимать ввод с клавиатуры, но окно документа является активным окном, в котором фактически вносятся изменения, и его следует отличать от других (неактивных) окон документа.

Хотя Java различаетактивные и сфокусированные окна в своем API, реализация связывает их вместе, так что некоторые комбинации (например, приведенный выше пример) невозможны или, по крайней мере, сложны в организации.Например, если вы щелкнете по фокусируемому окну Java, оно становится как сфокусированным, так и активным окном.

0 голосов
/ 18 декабря 2018

С Как написать окно слушателей , которое также отражает цитату в вашем вопросе:

windowActivated(WindowEvent) и windowDeactivated(WindowEvent):

Вызывается сразу послепрослушиваемое окно активируется или деактивируется соответственно.Эти методы не отправляются в окна, которые не являются фреймами или диалоговыми окнами.По этой причине предпочтительны методы windowGainedFocus и windowLostFocus, чтобы определить, когда окно получает или теряет фокус.


Так что windowActivated - это только , выполняемый, когда окноявляется рамкой или диалоговым окном, в то время как windowGainedFocus для всех типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...