|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class TextMeasurer extends Object implements Cloneable
TextMeasurer класс обеспечивает примитивные операции, необходимые для разрыва строки: ответ к данному усовершенствованию, определяя усовершенствование диапазона символов, и генерируя 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)
Возвращает графическую ширину строки, начинающейся в
start и включая символы до limit. |
TextLayout |
getLayout(int start, int limit)
Возвраты a
TextLayout на данном диапазоне символов. |
int |
getLineBreakIndex(int start, float maxAdvance)
Возвращает индекс первого символа, который не будет соответствовать на на строке, начинающейся в
start и возможный ответ к maxAdvance в графической ширине. |
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. Если класс и все его суперклассы (кроме Object) повинуйтесь этому соглашению, оно будет иметь место это x.clone().getClass() == x.getClass().
Условно, объект, возвращенный этим методом, должен быть независимым от этого объекта (который клонируется). Чтобы достигнуть этой независимости, может быть необходимо изменить одно или более полей объекта, возвращенного super.clone прежде, чем возвратить это. Как правило, это означает копировать любые изменчивые объекты, которые включают внутреннюю "глубинную структуру" клонируемого объекта и заменяющий ссылки на эти объекты со ссылками на копии. Если класс содержит только примитивные поля или ссылки на неизменные объекты, то он обычно имеет место что никакие поля в объекте, возвращенном super.clone потребность, которая будет изменена.
Метод clone для класса Object выполняет определенную работу клонирования. Во-первых, если класс этого объекта не реализует интерфейс Cloneable, тогда a CloneNotSupportedException бросается. Отметьте, что все массивы, как полагают, реализуют интерфейс Cloneable и что тип возврата clone метод типа массива T[] T[] где T является любым ссылочным типом или типом примитива. Иначе, этот метод создает новый экземпляр класса этого объекта и инициализирует все его поля с точно содержанием соответствующих полей этого объекта, как будто присвоением; содержание полей самостоятельно не клонируется. Таким образом этот метод выполняет "мелкую копию" этого объекта, не "глубокой копии" работа.
Класс Object самостоятельно не реализует интерфейс Cloneable, так вызов clone метод на объекте, класс которого Object приведет к выдаче исключения во время выполнения.
public int getLineBreakIndex(int start,
float maxAdvance)
start и возможный ответ к maxAdvance в графической ширине.start - символьный индекс, по которому можно начать измеряться. start абсолютный индекс, не относительно запуска абзацаmaxAdvance - графическая ширина, в которой должна соответствовать строкаstart, который не более длинен чем maxAdvance в графической ширинеIllegalArgumentException - если 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 и документации разработчика, см. . Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.