Spec-Zone.ru › OpenJDK 25

Интерфейс KeyEventDispatcher

Все известные реализующие классы:
DefaultFocusManager, DefaultKeyboardFocusManager, FocusManager, KeyboardFocusManager
Функциональный интерфейс:
Это функциональный интерфейс, поэтому его можно использовать в качестве целевого типа для лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface KeyEventDispatcher
KeyEventDispatcher взаимодействует с текущим KeyboardFocusManager при выборе цели и диспетчеризации всех KeyEvent. Объекты KeyEventDispatcher, зарегистрированные в текущем KeyboardFocusManager, получают KeyEvent до их передачи целям, что позволяет каждому KeyEventDispatcher изменить цель события, поглотить его, самостоятельно диспетчеризировать событие или внести другие изменения.

Обратите внимание, что сам KeyboardFocusManager реализует KeyEventDispatcher. По умолчанию текущий KeyboardFocusManager служит получателем всех KeyEvent, не диспетчеризированных зарегистрированными KeyEventDispatcher. Полностью отменить регистрацию текущего KeyboardFocusManager в качестве KeyEventDispatcher нельзя. Однако если KeyEventDispatcher сообщает, что он диспетчеризировал KeyEvent, независимо от того, сделал ли он это на самом деле, KeyboardFocusManager больше не предпринимает никаких действий в отношении этого KeyEvent. (Хотя клиентский код может зарегистрировать текущий KeyboardFocusManager в качестве KeyEventDispatcher один или несколько раз, обычно в этом нет необходимости, и делать это не рекомендуется.)

С момента:
1.4
См. также:
  • KeyboardFocusManager.addKeyEventDispatcher(KeyEventDispatcher)
  • KeyboardFocusManager.removeKeyEventDispatcher(KeyEventDispatcher)

Краткое описание методов

Модификатор и тип Метод Описание
boolean dispatchKeyEvent(KeyEvent e)
Этот метод вызывается текущим KeyboardFocusManager с запросом на то, чтобы этот KeyEventDispatcher диспетчеризировал от его имени указанное событие.

Подробное описание методов

dispatchKeyEvent

boolean dispatchKeyEvent(KeyEvent e)
Этот метод вызывается текущим KeyboardFocusManager с запросом на то, чтобы этот KeyEventDispatcher диспетчеризировал от его имени указанное событие. Этот KeyEventDispatcher может изменить цель события, поглотить его, самостоятельно диспетчеризировать его или внести другие изменения. Эта возможность обычно используется для доставки KeyEvent компонентам, отличным от владельца фокуса. Например, она может быть полезна при навигации по дочерним элементам окон, не принимающих фокус, в среде с поддержкой специальных возможностей. Обратите внимание: если KeyEventDispatcher самостоятельно диспетчеризирует KeyEvent, он должен использовать redispatchEvent, чтобы предотвратить повторный рекурсивный запрос текущего KeyboardFocusManager к этому KeyEventDispatcher на диспетчеризацию события.

Если реализация этого метода возвращает false, KeyEvent передается следующему KeyEventDispatcher в цепочке, а затем — текущему KeyboardFocusManager. Если реализация возвращает true, считается, что KeyEvent был диспетчеризирован (хотя это может быть и не так), и текущий KeyboardFocusManager больше не предпринимает никаких действий в отношении этого KeyEvent. В таком случае KeyboardFocusManager.dispatchEvent также должен возвращать true. Если реализация поглощает KeyEvent, но возвращает false, поглощенное событие все равно будет передано следующему KeyEventDispatcher в цепочке. Разработчикам важно проверять, был ли KeyEvent поглощен, прежде чем диспетчеризировать его целевому объекту. По умолчанию текущий KeyboardFocusManager не диспетчеризирует поглощенные KeyEvent.

Параметры:
e — KeyEvent для диспетчеризации
Возвращает:
true, если KeyboardFocusManager не должен предпринимать дальнейших действий в отношении KeyEvent; в противном случае — false
См. также:
  • KeyboardFocusManager.redispatchEvent(Component, AWTEvent)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/KeyEventDispatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API