Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Входное Клиентское Учебное руководство по API Метода

Содержание

  1. Реализация Активного Клиентского компонента
  2. Улучшение Активного Клиентского компонента
  3. Реализация Неклиента
  4. Пример кода

1. Реализация Активного Клиентского компонента

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

Так как API не делает предположений о том, как и где текст оттягивается, это может также использоваться, чтобы реализовать другие входные стили, такие как редактирование сверхпятна. В этом стиле составленный текст оттягивается по окружающему тексту и касается этого вместо того, чтобы быть интегрированным и отформатированным с этим.

Любой класс клиентского компонента может стать активным клиентом входного клиентского API метода и таким образом поддерживать интегрированный текстовый входной пользовательский интерфейс, выполняя следующие шаги:

Дополнительно, клиентский компонент может также использовать следующую функциональность:

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

Обработка Входных Событий Метода

Входная платформа метода обеспечивает класс событий, InputMethodEvent, поддерживать передачу между входными методами и текстовыми компонентами. У класса есть два отдельных вида события: текст изменился и измененное каре. Интерфейс слушателя события, InputMethodListener, поддерживает эти два события. Активный клиентский компонент должен реализовать InputMethodListener интерфейс, зарегистрируйте слушателя, и обработайте оба вида событий.

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

У события, сообщая о текстовом изменении есть ссылка на экземпляр AttributedCharacterIterator это представляет или составленный текст или фиксировавший текст или обоих вместе. Фиксировавшее символьное значение количества события определяет, сколько символов в диапазоне iterator является фиксировавшим текстом; все остающиеся символы являются составленным текстом. Фиксировавший текст всегда предшествует составленному тексту. Если компонент не имеет никакого предыдущего составленного текста, фиксировавшая и составленная текстовая замена какой-либо выбранный текст или вставляется в текущей позиции вставки текста компонента. Если есть предыдущий составленный текст, весь предыдущий составленный текст заменяется новым фиксировавшим и составленным текстом. Точка вставки перемещается до конца фиксировавшего текста. Клиентский компонент ответственен за перерисовку обновленного текста.

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

Обработка Входных Атрибутов Выделения Метода

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

Выделитесь атрибуты представляются InputMethodHighlight класс. Экземпляры этого класса используются в качестве значений атрибута экземпляров AttributedCharacterIterator, представляющих составленный текст. Текстовые компоненты должны сохранить эти атрибуты составленным текстом и передать их на подпрограммы рисунка при рисовании составленного текста. Они могут использовать любого drawString методы, которые принимают AttributedCharacterIterator, или создайте a TextLayout от iterator и использования его метод ничьей. Эти методы рисунка взаимодействуют с входной платформой метода, чтобы отобразить краткий обзор на конкретные стили выделения. Текстовые компоненты, используя эти методы поэтому обычно не должны касаться внутренних деталей входных выделений метода. Если текстовый компонент использует некоторый другой механизм, чтобы представить текст, это должно проверить входное выделение метода на конкретную информацию о стиле, и, если ни один не обеспечивается, использовать Toolkit.mapInputMethodHighlight отображаться на конкретный стиль.

Некоторые входные методы могут обработать выделения как "аннотации". Аннотации являются атрибутами, которые применяются к указанному диапазону текста, но не к поддиапазонам или связи диапазонов. Они представляются, переносясь InputMethodHighlight экземпляр в Annotation экземпляр. Входные методы могут использовать выделения аннотации, чтобы разделить текстовые сегменты, которые будут преобразованы как отдельные модули. На некоторых платформах представляются эти выделения, чтобы сделать сегменты видимыми, например, при использовании подчеркиваний с короткими перерывами между сегментами. Текстовые компоненты должны быть в состоянии обработать входные выделения метода, обертываются ли они в Annotation экземпляры или нет. Если текстовый компонент реализует обертывание строки, специальная забота должна быть проявлена, когда диапазон, к которому аннотация выделения применяет кресты граница строки: нормальное поведение (реализованный, например, в AttributedString) должен был бы отбросить атрибут, потому что он не применяется к поддиапазонам. Но, с тех пор в этом случае есть только визуальное повреждение и не логическое повреждение, выделение должно быть сохранено - это должно быть обработано, как будто это применялось к поддиапазонам, которые представляются на отдельных строках. Один способ сделать это, реализовывая AttributedCharacterIterator в пути, который возвращает аннотации выделения даже для поддиапазонов намеченного диапазона.

Обработка Входных Запросов Метода

Входной метод должен получить доступ к информации о компоненте, чтобы выполнить входные операции. Например, входной метод должен знать расположение, где список возможных вариантов можно показать.

Активный клиентский компонент поэтому должен реализовать InputMethodRequests интерфейс, и переопределение getInputMethodRequests возвратить обработчик запроса. Интерфейс включает методы в:

Окончание Входных Операций

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


2. Улучшение Активного Клиентского компонента

Обработка Дополнительных текстовых Атрибутов

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

AttributedCharacterIterator.Attribute класс определяет следующие общие атрибуты:

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

Создание Частных Входных Контекстов

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

Выбор Входных Методов

Текстовые компоненты могут использовать входной контекст selectInputMethod работа, чтобы выбрать входной метод для данного языка или локали. Это может быть полезно, например, если пользователь щелкает в тексте, который пишется на том языке, так как вероятно, что она хочет продолжать на том же самом языке. Или, текстовый компонент может знать, что приложение только позволяет тексту на определенном языке вводиться.

Установка Ожидаемого Символьного Подмножества

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

Используя Специфичную для механизма Функциональность

Некоторые входные методы могут обеспечить функциональность для клиентских компонентов, которые не могут быть сделаны доступными через входной API платформы метода. Это возможно через входные объекты управления метода. Входной разработчик метода должен опубликовать интерфейс для этих объектов. Клиентские компоненты, которые хотят использовать в своих интересах дополнительную функциональность, могут тогда вызвать InputContext.getInputMethodControlObject, проверьте, является ли возвращенный объект экземпляром известного класса объекта управления, и если это, вызовите его методы.


3. Реализация Неклиента

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


4. Пример кода

Этот пример кода показывает, как реализовать различные виды входных клиентов метода, которые возможны с входной платформой метода: активный клиент, пассивный клиент, неклиент, и текстовый компонент, с которым взаимодействуют.


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами