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()
Object
x
, выражение: будет истина, и что выражение: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
и включая символы до 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 и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.