|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class TextMeasurer extends Object implements Cloneable
TextMeasurer class обеспечивает примитивные операции, необходимые для разрыва строки: ответ к данному усовершенствованию, определяя усовершенствование диапазона символов, и генерируя a TextLayout для диапазона символов. Это также обеспечивает методы для инкрементного редактирования абзацев. A TextMeasurer объект создается с AttributedCharacterIterator представление единственного абзаца текста. Значение, возвращенное getBeginIndex метод AttributedCharacterIterator определяет абсолют, индексируют первого символа. Значение, возвращенное getEndIndex метод AttributedCharacterIterator определяет индексировать прошлое последний знак. Эти значения определяют диапазон, индексирует, чтобы использовать в звонках TextMeasurer. Например, вызовы, чтобы получить усовершенствование диапазона текста или разрыва строки диапазона текста должны использовать, индексирует между началом, и конец индексируют значения. Звонки insertChar и deleteChar сбросьте TextMeasurer чтобы использовать начало индексируют, и конец индексируют AttributedCharacterIterator переданный в тех вызовах.
Большинство клиентов будет использовать более удобное LineBreakMeasurer, который реализует стандартную политику разрыва строки (помещающий так много слов, как будет соответствовать на каждой строке).
LineBreakMeasurer| Конструктор и Описание |
|---|
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
Конструкции a
TextMeasurer из исходного текста. |
| Модификатор и Тип | Метод и Описание |
|---|---|
protected Object |
clone()
Создает и возвращает копию этого объекта.
|
void |
deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
Обновления
TextMeasurer после того, как единственный символ был удален из абзаца, в настоящий момент представленного этим TextMeasurer. |
float |
getAdvanceBetween(int start, int limit)
Возвращает графический width строки, начинающейся в
start и включая символы до limit. |
TextLayout |
getLayout(int start, int limit)
Возвраты a
TextLayout на данном диапазоне символов. |
int |
getLineBreakIndex(int start, float maxAdvance)
Возвращает индексирование первого символа, который не будет соответствовать на на строке, начинающейся в
start и возможный ответ к maxAdvance в графическом width. |
void |
insertChar(AttributedCharacterIterator newParagraph, int insertPos)
Обновления
TextMeasurer после того, как единственный символ был вставлен в абзац, в настоящий момент представленный этим TextMeasurer. |
public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
TextMeasurer из исходного текста. Исходный текст должен быть единственным всем абзацем.text - исходный абзац. Не может быть нуль.frc - информация о графическом устройстве, которое необходимо, чтобы измерить текст правильно. Не может быть нуль.protected Object clone()
Objectx, выражение: будет истина, и что выражение:x.clone() != x
будетx.clone().getClass() == x.getClass()
true, но они не абсолютные требования. В то время как это обычно имеет место что: будетx.clone().equals(x)
true, это не абсолютное требование. Условно, возвращенный объект должен быть получен, вызывая super.clone. Если class и все его суперклассы (кроме Object) повинуйтесь этому соглашению, оно будет иметь место это x.clone().getClass() == x.getClass().
Условно, объект, возвращенный этим методом, должен быть независимым от этого объекта (который клонируется). Чтобы достигнуть этой независимости, может быть необходимо изменить одно или более полей объекта, возвращенного super.clone прежде, чем возвратить это. Как правило, это означает копировать любые изменчивые объекты, которые включают внутреннюю "глубинную структуру" клонируемого объекта и заменяющий ссылки на эти объекты со ссылками на копии. Если class содержит только примитивные поля или ссылки на неизменные объекты, то он обычно имеет место что никакие поля в объекте, возвращенном super.clone потребность, которая будет изменена.
Метод clone для class Object выполняет определенную работу клонирования. Во-первых, если class этого объекта не реализует интерфейс Cloneable, тогда a CloneNotSupportedException бросается. Отметьте, что все массивы, как полагают, реализуют интерфейс Cloneable и что тип возврата clone метод типа массива T[] T[] где T является любым ссылочным типом или типом примитива. Иначе, этот метод создает новый экземпляр class этого объекта и инициализирует все его поля с точно содержанием соответствующих полей этого объекта, как будто присвоением; содержание полей самостоятельно не клонируется. Таким образом этот метод выполняет "мелкую копию" этого объекта, не "глубокой копии" работа.
class Object самостоятельно не реализует интерфейс Cloneable, так вызов clone метод на объекте, class которого Object приведет к выдаче исключения во время выполнения.
public int getLineBreakIndex(int start,
float maxAdvance)
start и возможный ответ к maxAdvance в графическом width.start - символ индексирует, в котором можно начать измеряться. start абсолют, индексируют, не относительно запуска абзацаmaxAdvance - графический width, в котором должна соответствовать строкаstart, который не более длинен чем maxAdvance в графическом widthIllegalArgumentException - если start меньше чем начало абзаца.public float getAdvanceBetween(int start,
int limit)
start и включая символы до limit. start и limit абсолютные индексы, не относительно запуска абзаца.start - символ индексирует, в котором можно начать измерятьсяlimit - символ индексирует, в котором можно прекратить измерятьсяstart и включая символы до limitIndexOutOfBoundsException - если limit меньше чем startIllegalArgumentException - если start или limit не между началом абзаца и концом абзаца.public TextLayout getLayout(int start, int limit)
TextLayout на данном диапазоне символов.start - индексирование первого символаlimit - индексирование после последнего знака. Должно быть больше чем startTextLayout для символов, начинающихся в start до (но не включая) limitIndexOutOfBoundsException - если limit меньше чем startIllegalArgumentException - если start или limit не между началом абзаца и концом абзаца.public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
TextMeasurer после того, как единственный символ был вставлен в абзац, в настоящий момент представленный этим TextMeasurer. После этого вызова, этого TextMeasurer эквивалентно новому TextMeasurer создаваемый из текста; однако, обычно будет более эффективно обновить существующее TextMeasurer чем создать новый с нуля.newParagraph - текст абзаца после выполнения вставки. Не может быть нуль.insertPos - позиция в тексте, где символ был вставлен. Не должны быть меньше чем запуск newParagraph, и должны быть меньше чем конец newParagraph.IndexOutOfBoundsException - если insertPos меньше чем запуск newParagraph или больше чем или равный до конца newParagraphNullPointerException - если newParagraph nullpublic void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
TextMeasurer после того, как единственный символ был удален из абзаца, в настоящий момент представленного этим TextMeasurer. После этого вызова, этого TextMeasurer эквивалентно новому TextMeasurer создаваемый из текста; однако, обычно будет более эффективно обновить существующее TextMeasurer чем создать новый с нуля.newParagraph - текст абзаца после выполнения удаления. Не может быть нуль.deletePos - позиция в тексте, куда символ был удален. Не должны быть меньше чем запуск newParagraph, и не должно быть больше чем конец newParagraph.IndexOutOfBoundsException - если deletePos меньше чем запуск newParagraph или больше чем конец newParagraphNullPointerException - если newParagraph null
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92