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()
Object
x
, выражение: будет истина, и что выражение: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
и включая символы до limit
IndexOutOfBoundsException
- если limit
меньше чем start
IllegalArgumentException
- если start
или limit
не между началом абзаца и концом абзаца.public TextLayout getLayout(int start, int limit)
TextLayout
на данном диапазоне символов.start
- индексирование первого символаlimit
- индексирование после последнего знака. Должно быть больше чем start
TextLayout
для символов, начинающихся в start
до (но не включая) limit
IndexOutOfBoundsException
- если limit
меньше чем start
IllegalArgumentException
- если start
или limit
не между началом абзаца и концом абзаца.public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
TextMeasurer
после того, как единственный символ был вставлен в абзац, в настоящий момент представленный этим TextMeasurer
. После этого вызова, этого TextMeasurer
эквивалентно новому TextMeasurer
создаваемый из текста; однако, обычно будет более эффективно обновить существующее TextMeasurer
чем создать новый с нуля.newParagraph
- текст абзаца после выполнения вставки. Не может быть нуль.insertPos
- позиция в тексте, где символ был вставлен. Не должны быть меньше чем запуск newParagraph
, и должны быть меньше чем конец newParagraph
.IndexOutOfBoundsException
- если insertPos
меньше чем запуск newParagraph
или больше чем или равный до конца newParagraph
NullPointerException
- если newParagraph
null
public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
TextMeasurer
после того, как единственный символ был удален из абзаца, в настоящий момент представленного этим TextMeasurer
. После этого вызова, этого TextMeasurer
эквивалентно новому TextMeasurer
создаваемый из текста; однако, обычно будет более эффективно обновить существующее TextMeasurer
чем создать новый с нуля.newParagraph
- текст абзаца после выполнения удаления. Не может быть нуль.deletePos
- позиция в тексте, куда символ был удален. Не должны быть меньше чем запуск newParagraph
, и не должно быть больше чем конец newParagraph
.IndexOutOfBoundsException
- если deletePos
меньше чем запуск newParagraph
или больше чем конец newParagraph
NullPointerException
- если newParagraph
null
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92