Интерфейс InputMethod
public interface InputMethod
Определяет интерфейс для метода ввода, поддерживающего сложный ввод текста. Методы ввода традиционно поддерживают ввод текста для языков, которые имеют больше символов, чем может отобразить клавиатура стандартного размера, таких как китайский, японский и корейский. Однако они также могут использоваться для поддержки фонетического ввода текста для английского языка или переупорядочения символов для тайского языка.
Подклассы InputMethod могут загружаться фреймворком метода ввода; затем их можно выбрать либо через API (InputContext.selectInputMethod), либо через пользовательский интерфейс (меню выбора метода ввода).
- Since:
- 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)
Устанавливает подмножества набора символов 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()
Закрывает или скрывает все окна, открытые этим экземпляром метода ввода или его классом.
Этот метод вызывается
Метод вызывается только тогда, когда метод ввода неактивен.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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/im/spi/InputMethod.html