Spec-Zone.ru › OpenJDK 25

Интерфейс InputMethod

public interface InputMethod
Определяет интерфейс метода ввода, поддерживающего ввод сложного текста. Традиционно методы ввода используются для ввода текста на языках, в которых количество символов превышает число символов, представимых на стандартной клавиатуре, например на китайском, японском и корейском. Однако их также можно использовать для поддержки фонетического ввода текста на английском языке или изменения порядка символов в тайском языке.

Подклассы InputMethod могут загружаться инфраструктурой методов ввода; после этого их можно выбрать через API (InputContext.selectInputMethod) или пользовательский интерфейс (меню выбора метода ввода).

Начиная с:
1.3

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

Модификатор и тип Метод Описание
void activate()
Активирует метод ввода для немедленной обработки ввода.
void deactivate(boolean isTemporary)
Деактивирует метод ввода.
void dispatchEvent(AWTEvent event)
Передает событие методу ввода.
void dispose()
Освобождает ресурсы, используемые этим методом ввода.
void endComposition()
Завершает текущую композицию ввода в этом контексте.
Object getControlObject()
Возвращает управляющий объект этого метода ввода или null.
Locale getLocale()
Возвращает текущую языковую локаль ввода.
void hideWindows()
Закрывает или скрывает все окна, открытые этим экземпляром или классом метода ввода.
boolean isCompositionEnabled()
Определяет, включен ли этот метод ввода.
void notifyClientWindowChange(Rectangle bounds)
Уведомляет этот метод ввода об изменениях положения или состояния окна клиентского приложения.
void reconvert()
Запускает операцию повторного преобразования.
void removeNotify()
Уведомляет метод ввода о том, что клиентский компонент удален из иерархии содержащих его компонентов или что для компонента отключена поддержка методов ввода.
void setCharacterSubsets(Character.Subset[] subsets)
Задает подмножества набора символов Unicode, которые этому методу ввода разрешено вводить.
void setCompositionEnabled(boolean enable)
Включает или отключает этот метод ввода для композиции в зависимости от значения параметра enable.
void setInputMethodContext(InputMethodContext context)
Задает контекст метода ввода, используемый для передачи событий метода ввода клиентскому компоненту и запроса информации у него.
boolean setLocale(Locale locale)
Пытается задать языковую локаль ввода.

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

setInputMethodContext

void setInputMethodContext(InputMethodContext context)
Задает контекст метода ввода, используемый для передачи событий метода ввода клиентскому компоненту и запроса информации у него.

Этот метод вызывается один раз сразу после создания экземпляра этого метода ввода.

Параметры:
context — контекст метода ввода для этого метода ввода
Выбрасывает:
NullPointerException — если context имеет значение null

setLocale

boolean setLocale(Locale locale)
Пытается задать языковую локаль ввода. Если метод ввода поддерживает требуемую локаль, он изменяет свое поведение для поддержки ввода на этой локали и возвращает true. В противном случае он возвращает false и не изменяет своего поведения.

Этот метод вызывается

  • методом InputContext.selectInputMethod,
  • при переключении на этот метод ввода через пользовательский интерфейс, если пользователь указал локаль или если метод getLocale ранее выбранного метода ввода возвращает ненулевое значение.
Параметры:
locale — локаль для ввода
Возвращает:
поддерживается ли указанная локаль
Выбрасывает:
NullPointerException — если locale имеет значение null

getLocale

Locale getLocale()
Возвращает текущую языковую локаль ввода. В исключительных случаях может вернуть null.

Этот метод вызывается

  • методом InputContext.getLocale и
  • при переключении с этого метода ввода на другой через пользовательский интерфейс.
Возвращает:
текущую языковую локаль ввода или null

setCharacterSubsets

void setCharacterSubsets(Character.Subset[] subsets)
Задает подмножества набора символов Unicode, которые этому методу ввода разрешено вводить. Чтобы указать, что разрешены все символы, можно передать null.

Этот метод вызывается

  • сразу после создания экземпляра этого метода ввода,
  • при переключении на этот метод ввода с другого и
  • методом InputContext.setCharacterSubsets.
Параметры:
subsets — подмножества набора символов Unicode, из которых можно вводить символы

setCompositionEnabled

void setCompositionEnabled(boolean enable)
Включает или отключает этот метод ввода для композиции в зависимости от значения параметра enable.

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

Для методов ввода, предоставляемых операционными системами, не всегда можно определить, поддерживается ли эта операция. Например, метод ввода может включать композицию только для некоторых локалей и ничего не делать для других. Поэтому такой метод может не выбрасывать UnsupportedOperationException, но при этом не влиять на то, включена ли композиция.

Этот метод вызывается

  • методом InputContext.setCompositionEnabled,
  • при переключении на этот метод ввода с другого через пользовательский интерфейс или InputContext.selectInputMethod, если метод isCompositionEnabled ранее выбранного метода ввода завершается без исключения.
Параметры:
enable — следует ли включить метод ввода для композиции
Выбрасывает:
UnsupportedOperationException — если этот метод ввода не поддерживает операцию включения или отключения
См. также:
  • isCompositionEnabled()

isCompositionEnabled

boolean isCompositionEnabled()
Определяет, включен ли этот метод ввода. Метод ввода, включенный для композиции, интерпретирует поступающие события как для композиции, так и для управления, тогда как отключенный метод ввода не интерпретирует события для композиции.

Этот метод вызывается

  • методом InputContext.isCompositionEnabled и
  • при переключении с этого метода ввода на другой через пользовательский интерфейс или InputContext.selectInputMethod.
Возвращает:
true, если этот метод ввода включен для композиции; в противном случае — false.
Выбрасывает:
UnsupportedOperationException — если этот метод ввода не поддерживает проверку того, включен ли он для композиции
См. также:
  • setCompositionEnabled(boolean)

reconvert

void reconvert()
Запускает операцию повторного преобразования. Метод ввода получает текст для повторного преобразования из текущего клиентского компонента с помощью метода InputMethodRequests.getSelectedText. Для запроса дополнительной информации, необходимой для операции повторного преобразования, он может использовать другие методы InputMethodRequests. Составленный и зафиксированный текст, полученный в результате операции, отправляется клиентскому компоненту в виде последовательности InputMethodEvent. Если указанный текст невозможно преобразовать повторно, тот же текст следует отправить клиентскому компоненту как зафиксированный текст.

Этот метод вызывается методом InputContext.reconvert.

Выбрасывает:
UnsupportedOperationException — если метод ввода не поддерживает операцию повторного преобразования.

dispatchEvent

void dispatchEvent(AWTEvent event)
Передает событие методу ввода. Если для сфокусированного компонента включена поддержка методов ввода, поступающие события определенных типов передаются текущему методу ввода этого компонента до передачи методам компонента или его обработчикам событий. Метод ввода решает, нужно ли ему обработать событие. Если да, он также вызывает метод события consume; в результате событие не передается методам обработки событий компонента или его обработчикам событий.

Передаются события, являющиеся экземплярами InputEvent или его подклассов. Сюда входят экземпляры классов AWT KeyEvent и MouseEvent.

Этот метод вызывается методом InputContext.dispatchEvent.

Параметры:
event — событие, передаваемое методу ввода
Выбрасывает:
NullPointerException — если event имеет значение null

notifyClientWindowChange

void notifyClientWindowChange(Rectangle bounds)
Уведомляет этот метод ввода об изменениях положения или состояния окна клиентского приложения. Этот метод вызывается, когда данный метод ввода является текущим методом ввода своего контекста ввода и для него включены уведомления (см. InputMethodContext.enableClientWindowNotification). Вызовы этого метода временно приостанавливаются при вызове метода removeNotify контекста ввода и возобновляются, когда метод ввода активируется для нового клиентского компонента. Метод вызывается в следующих случаях:
  • при изменении положения, размера или видимости окна, содержащего текущий клиентский компонент, при сворачивании окна или его закрытии;
  • из enableClientWindowNotification(inputMethod, true), если текущий клиентский компонент существует;
  • при первой активации метода ввода после вызова им enableClientWindowNotification(inputMethod, true), если во время вызова текущий клиентский компонент был недоступен;
  • при активации метода ввода для нового клиентского компонента после вызова метода removeNotify контекста ввода.
Параметры:
bounds — bounds окна клиентского приложения на экране; или null, если окно клиентского приложения свернуто или невидимо

activate

void activate()
Активирует метод ввода для немедленной обработки ввода.

Если метод ввода предоставляет собственные окна, на этом этапе он должен убедиться, что все необходимые окна открыты и видимы.

Этот метод вызывается

  • методом InputContext.dispatchEvent, когда клиентский компонент получает событие FOCUS_GAINED,
  • при переключении на этот метод ввода с другого через пользовательский интерфейс или InputContext.selectInputMethod.
Метод вызывается только тогда, когда метод ввода неактивен. Предполагается, что только что созданный экземпляр метода ввода неактивен.

deactivate

void deactivate(boolean isTemporary)
Деактивирует метод ввода. Аргумент isTemporary имеет то же значение, что и в FocusEvent.isTemporary.

Если метод ввода предоставляет собственные окна, на этом этапе следует закрыть только окна, относящиеся к текущей композиции (например, окно выбора варианта). Метод ввода может сразу же снова активироваться для другого клиентского компонента; закрытие и повторное открытие более постоянных окон (например, панели управления) приведет к ненужному мерцанию экрана. Перед активацией экземпляра другого класса метода ввода для текущего метода ввода вызывается hideWindows().

Этот метод вызывается

  • методом InputContext.dispatchEvent, когда клиентский компонент получает событие FOCUS_LOST,
  • при переключении с этого метода ввода на другой через пользовательский интерфейс или InputContext.selectInputMethod,
  • перед вызовом removeNotify, если текущий клиентский компонент удаляется.
Метод вызывается только тогда, когда метод ввода активен.
Параметры:
isTemporary — является ли смена фокуса временной

hideWindows

void hideWindows()
Закрывает или скрывает все окна, открытые этим экземпляром или классом метода ввода.

Этот метод вызывается

  • перед вызовом activate для экземпляра другого класса метода ввода,
  • перед вызовом dispose для этого метода ввода.
Метод вызывается только тогда, когда метод ввода неактивен.

removeNotify

void removeNotify()
Уведомляет метод ввода о том, что клиентский компонент удален из иерархии содержащих его компонентов или что для компонента отключена поддержка методов ввода.

Этот метод вызывается методом InputContext.removeNotify.

Метод вызывается только тогда, когда метод ввода неактивен.

endComposition

void endComposition()
Завершает текущую композицию ввода в этом контексте. В зависимости от платформы и, возможно, пользовательских настроек, это может привести к фиксации или удалению незафиксированного текста. Любые изменения текста передаются активному компоненту с помощью события метода ввода.

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

Этот метод вызывается

  • методом InputContext.endComposition,
  • методом InputContext.dispatchEvent при переключении на другой клиентский компонент,
  • при переключении с этого метода ввода на другой через пользовательский интерфейс или InputContext.selectInputMethod.

dispose

void dispose()
Освобождает ресурсы, используемые этим методом ввода. В частности, метод ввода должен уничтожить окна и закрыть файлы, которые больше не нужны.

Этот метод вызывается методом InputContext.dispose.

Метод вызывается только тогда, когда метод ввода неактивен. После вызова dispose для этого экземпляра не вызывается ни один метод этого интерфейса.

getControlObject

Object getControlObject()
Возвращает управляющий объект этого метода ввода или null. Управляющий объект предоставляет методы для управления поведением метода ввода или получения от него информации. Тип объекта — класс, специфичный для конкретного метода ввода. Клиентам необходимо сравнить результат с известными классами управляющих объектов методов ввода и привести его к соответствующему классу, чтобы вызвать предоставляемые им методы.

Этот метод вызывается методом InputContext.getInputMethodControlObject.

Возвращает:
управляющий объект этого метода ввода или null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/im/spi/InputMethod.html

Spec-Zone.ru

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