Интерфейс 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) Устанавливает подмножества набора символов Юникода, ввод которых разрешён для этого метода ввода. |
void |
setCompositionEnabled(boolean 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)
Устанавливает подмножества набора символов Юникода, которые этот метод ввода разрешено использовать для ввода. Передача null указывает, что все символы разрешены.
Этот метод вызывается
- сразу после создания экземпляра этого метода ввода,
- при переключении на этот метод ввода с другого, и
- методом
InputContext.setCharacterSubsets.
- Параметры:
-
subsets- подмножества набора символов Юникода, из которых разрешено вводить символы
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()
Закрывает или скрывает все окна, открытые этим экземпляром метода ввода или его классом.
Этот метод вызывается
Метод вызывается только когда метод ввода неактивен.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
© 1993, 2020, 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.