Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class TextLayout extends Object implements Cloneable
TextLayout
неизменное графическое изображение стилизованных символьных данных. Это обеспечивает следующие возможности:
A TextLayout
объект может быть представлен, используя draw
метод.
TextLayout
может быть создан или непосредственно или с помощью a LineBreakMeasurer
. Когда создано непосредственно, исходный текст представляет единственный абзац. LineBreakMeasurer
позволяет разработанному тексту быть поврежденным в строки, которые соответствуют в пределах определенной ширины. См. LineBreakMeasurer
документация для получения дополнительной информации.
TextLayout
конструкция логически продолжается следующим образом:
TextAttribute.FONT
присутствует, иначе вычисляя шрифт по умолчанию, используя атрибуты, которые были определены Вся графическая информация возвратилась из a TextLayout
методы объекта относительно источника TextLayout
, который является пересечением TextLayout
базовая линия объекта с ее левым краем. Кроме того, координаты передают в a TextLayout
методы объекта, как предполагается, относительно TextLayout
источник объекта. Клиенты обычно должны преобразовывать между a TextLayout
система координат объекта и система координат в другом объекте (таком как a Graphics
объект).
TextLayout
объекты создаются из стилизованного текста, но они не сохраняют ссылку на свой исходный текст. Таким образом, изменения в тексте, ранее используемом, чтобы генерировать a TextLayout
не влияйте TextLayout
.
Три метода на a TextLayout
объект (getNextRightHit
, getNextLeftHit
, и hitTestChar
) возвратите экземпляры TextHitInfo
. Смещения содержатся в них TextHitInfo
объекты относительно запуска TextLayout
, не к тексту, используемому, чтобы создать TextLayout
. Точно так же TextLayout
методы, которые принимают TextHitInfo
экземпляры как параметры ожидают TextHitInfo
смещения объекта, чтобы быть относительно TextLayout
, не к любой базовой текстовой модели хранения.
Примеры:
Построение и рисунок a TextLayout
и его ограничительный прямоугольник:
Graphics2D g = ...; Point2D loc = ...; Font font = Font.getFont("Helvetica-bold-italic"); FontRenderContext frc = g.getFontRenderContext(); TextLayout layout = new TextLayout("This is a string", font, frc); layout.draw(g, (float)loc.getX(), (float)loc.getY()); Rectangle2D bounds = layout.getBounds(); bounds.setRect(bounds.getX()+loc.getX(), bounds.getY()+loc.getY(), bounds.getWidth(), bounds.getHeight()); g.draw(bounds);
Тестирование хита a TextLayout
(определение, которое символ в определенном графическом расположении):
Point2D click = ...; TextHitInfo hit = layout.hitTestChar( (float) (click.getX() - loc.getX()), (float) (click.getY() - loc.getY()));
Отвечание на нажатие клавиши со стрелкой вправо:
int insertionIndex = ...; TextHitInfo next = layout.getNextRightHit(insertionIndex); if (next != null) { // translate graphics to origin of layout on screen g.translate(loc.getX(), loc.getY()); Shape[] carets = layout.getCaretShapes(next.getInsertionIndex()); g.draw(carets[0]); if (carets[1] != null) { g.draw(carets[1]); } }
Рисование диапазона выбора, соответствующего подстроке в исходном тексте. Выбранная область, возможно, не визуально непрерывна:
// selStart, selLimit should be relative to the layout, // not to the source text int selStart = ..., selLimit = ...; Color selectionColor = ...; Shape selection = layout.getLogicalHighlightShape(selStart, selLimit); // selection may consist of disjoint areas // graphics is assumed to be tranlated to origin of layout g.setColor(selectionColor); g.fill(selection);
Рисование визуально непрерывного диапазона выбора. Диапазон выбора может соответствовать больше чем одной подстроке в исходном тексте. Диапазоны соответствующих исходных текстовых подстрок могут быть получены с getLogicalRangesForVisualSelection()
:
TextHitInfo selStart = ..., selLimit = ...; Shape selection = layout.getVisualHighlightShape(selStart, selLimit); g.setColor(selectionColor); g.fill(selection); int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit); // ranges[0], ranges[1] is the first selection range, // ranges[2], ranges[3] is the second selection range, etc.
Отметьте: вращения Шрифта могут заставить текстовые базовые линии быть повернутыми, и многократные выполнения с различными вращениями могут заставить базовую линию изгибаться или делать зигзаги. Чтобы учесть эту (редкую) возможность, некоторые API определяются, чтобы возвратить метрики и взять параметры 'в базово-относительных координатах (например, подъем, усовершенствование), и другие находятся в 'в стандартных координатах (например, getBounds). Значения в базово-относительных координатах отображают координату 'x' на расстояние вдоль базовой линии, (положительный x вперед приезжает, базовая линия), и координата 'y' к расстоянию вдоль перпендикуляра к базовой линии в 'x' (postitive y составляет 90 градусов по часовой стрелке от базового вектора). Значения в стандартных координатах измеряются вдоль x и осей Y, с 0,0 в источнике TextLayout. Документация для каждого соответствующего API указывает на то, какие значения находятся в какой система координат. Вообще, связанные с измерением API находятся в базово-относительных координатах, в то время как связанные с дисплеем API находятся в стандартных координатах.
LineBreakMeasurer
, TextAttribute
, TextHitInfo
, LayoutPath
Модификатор и Тип | Класс и Описание |
---|---|
static class |
TextLayout. CaretPolicy
Определяет политику для того, чтобы определить сильное расположение каре.
|
Модификатор и Тип | Поле и Описание |
---|---|
static TextLayout.CaretPolicy |
DEFAULT_CARET_POLICY
Это
CaretPolicy используется, когда политика не определяется клиентом. |
Конструктор и Описание |
---|
TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
Конструкции a
TextLayout от iterator по стилизованному тексту. |
TextLayout(String string, Font font, FontRenderContext frc)
|
TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
Конструкции a
TextLayout от a String и атрибут устанавливается. |
Модификатор и Тип | Метод и Описание |
---|---|
protected Object |
clone()
Создает копию этого
TextLayout . |
void |
draw(Graphics2D g2, float x, float y)
Рендеринг это
TextLayout в указанном расположении в указанном Graphics2D контекст. |
boolean |
equals(Object obj)
Возвраты
true если указанное Object a TextLayout возразите и если указанное Object равняется этому TextLayout . |
boolean |
equals(TextLayout rhs)
Возвраты
true если эти две разметки равны. |
float |
getAdvance()
Возвращает усовершенствование этого
TextLayout . |
float |
getAscent()
Возвращает подъем этого
TextLayout . |
byte |
getBaseline()
Возвращает базовую линию для этого
TextLayout . |
float[] |
getBaselineOffsets()
Возвращает массив смещений для базовых линий, используемых для этого
TextLayout . |
Форма |
getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
Возвращает границы черного квадрата символов в указанном диапазоне.
|
Rectangle2D |
getBounds()
Возвращает границы этого
TextLayout . |
float[] |
getCaretInfo(TextHitInfo hit)
Информация о возвратах о соответствии каре
hit . |
float[] |
getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
Информация о возвратах о соответствии каре
hit . |
Форма |
getCaretShape(TextHitInfo hit)
Возвраты a
Shape представление каре при указанном хите в естественных границах этого TextLayout . |
Форма |
getCaretShape(TextHitInfo hit, Rectangle2D bounds)
Возвраты a
Shape представление каре при указанном хите в указанных границах. |
Форма[] |
getCaretShapes(int offset)
Возвраты два пути, соответствующие сильному и слабому каре.
|
Форма[] |
getCaretShapes(int offset, Rectangle2D bounds)
Возвраты два пути, соответствующие сильному и слабому каре.
|
Форма[] |
getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
Возвраты два пути, соответствующие сильному и слабому каре.
|
int |
getCharacterCount()
Возвращает число символов, представленных этим
TextLayout . |
byte |
getCharacterLevel(int index)
Возвращает уровень символа в
index . |
float |
getDescent()
Возвращает спуск этого
TextLayout . |
TextLayout |
getJustifiedLayout(float justificationWidth)
Создает копию этого
TextLayout выровненный по ширине к указанной ширине. |
LayoutPath |
getLayoutPath()
Возвратите LayoutPath, или нуль, если путь расположения является путем по умолчанию (x отображается на усовершенствование, y, отображается на смещение).
|
float |
getLeading()
Возвращает продвижение
TextLayout . |
Форма |
getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
Возвраты a
Shape включение логического выбора в указанном диапазоне, расширенном на естественные границы этого TextLayout . |
Форма |
getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
Возвраты a
Shape включение логического выбора в указанном диапазоне, расширенном на указанное bounds . |
int[] |
getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
Возвращает логические диапазоны текста, соответствующего визуальному выбору.
|
TextHitInfo |
getNextLeftHit(int offset)
Возвращает хит для следующего каре к левому (вершина); если никакой такой хит, возвраты
null . |
TextHitInfo |
getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
Возвращает хит для следующего каре к левому (вершина); если никакой такой хит, возвраты
null . |
TextHitInfo |
getNextLeftHit(TextHitInfo hit)
Возвращает хит для следующего каре к левому (вершина); если никакой такой хит, возвраты
null . |
TextHitInfo |
getNextRightHit(int offset)
Возвращает хит для следующего каре к праву (нижняя часть); если никакой такой хит, возвраты
null . |
TextHitInfo |
getNextRightHit(int offset, TextLayout.CaretPolicy policy)
Возвращает хит для следующего каре к праву (нижняя часть); если никакой такой хит, возвраты
null . |
TextHitInfo |
getNextRightHit(TextHitInfo hit)
Возвращает хит для следующего каре к праву (нижняя часть); если нет такого хита, возвратов
null . |
Форма |
getOutline(AffineTransform tx)
Возвраты a
Shape представление схемы этого TextLayout . |
Прямоугольник |
getPixelBounds(FontRenderContext frc, float x, float y)
Возвращает пиксельные границы этого
TextLayout когда представлено в графике с данным FontRenderContext в данном расположении. |
float |
getVisibleAdvance()
Возвращает усовершенствование этого
TextLayout , минус запаздывающий пробел. |
Форма |
getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
Возвраты a
Shape включение визуального выбора в указанном диапазоне, расширенном на границы. |
Форма |
getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
Возвращает путь, включающий визуальный выбор в указанный диапазон, расширенный на
bounds . |
TextHitInfo |
getVisualOtherHit(TextHitInfo hit)
Возвращает хит на противоположной стороне каре указанного хита.
|
protected void |
handleJustify(float justificationWidth)
Выровняйте по ширине это расположение.
|
int |
hashCode()
Возвращает хэш-код этого
TextLayout . |
TextHitInfo |
hitTestChar(float x, float y)
Возвраты a
TextHitInfo соответствие указанной точке. |
TextHitInfo |
hitTestChar(float x, float y, Rectangle2D bounds)
Возвраты a
TextHitInfo соответствие указанной точке. |
void |
hitToPoint(TextHitInfo hit, Point2D point)
Преобразуйте хит в точку в стандартных координатах.
|
boolean |
isLeftToRight()
Возвраты
true если это TextLayout имеет слева направо основное направление или false если у этого есть справа налево основное направление. |
boolean |
isVertical()
Возвраты
true если это TextLayout вертикаль. |
Строка |
toString()
Отладочная информация возвратов для этого
TextLayout . |
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicy
используется, когда политика не определяется клиентом. С этой политикой хит на символе, направление которого является тем же самым как направлением строки, более силен чем хит на противонаправленном символе. Если направления символов являются тем же самым, хит на переднем крае символа более силен чем хит на запаздывающем краю символа.public TextLayout(String string, Font font, FontRenderContext frc)
TextLayout
от a String
и a Font
. Весь текст разрабатывается, используя указанное Font
. String
должен определить единственный абзац текста, потому что весь абзац требуется для двунаправленного алгоритма.
string
- текст, чтобы вывести на экранfont
- a Font
используемый, чтобы разработать текстfrc
- содержит информацию о графическом устройстве, которое необходимо, чтобы измерить текст правильно. Текстовые измерения могут измениться немного в зависимости от разрешения устройства, и атрибутов, таких как сглаживание. Этот параметр не определяет преобразование между TextLayout
и пространство пользователя.public TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
TextLayout
от a String
и атрибут устанавливается. Весь текст разрабатывается, используя обеспеченные атрибуты.
string
должен определить единственный абзац текста, потому что весь абзац требуется для двунаправленного алгоритма.
string
- текст, чтобы вывести на экранattributes
- атрибуты, используемые, чтобы разработать текстfrc
- содержит информацию о графическом устройстве, которое необходимо, чтобы измерить текст правильно. Текстовые измерения могут измениться немного в зависимости от разрешения устройства, и атрибутов, таких как сглаживание. Этот параметр не определяет преобразование между TextLayout
и пространство пользователя.public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
TextLayout
от iterator по стилизованному тексту. iterator должен определить единственный абзац текста, потому что весь абзац требуется для двунаправленного алгоритма.
text
- стилизованный текст, чтобы вывести на экранfrc
- содержит информацию о графическом устройстве, которое необходимо, чтобы измерить текст правильно. Текстовые измерения могут измениться немного в зависимости от разрешения устройства, и атрибутов, таких как сглаживание. Этот параметр не определяет преобразование между TextLayout
и пространство пользователя.protected Object clone()
TextLayout
.public TextLayout getJustifiedLayout(float justificationWidth)
TextLayout
выровненный по ширине к указанной ширине. Если это TextLayout
был уже выровнен по ширине, исключение выдается. Если это TextLayout
отношение выравнивания объекта является нулем, a TextLayout
идентичный этому TextLayout
возвращается.
justificationWidth
- ширина, чтобы использовать, выравнивая строку. Для лучших результатов это не должно слишком отличаться от текущего усовершенствования строки.TextLayout
выровненный по ширине к указанной ширине.Error
- если это расположение было уже выровнено по ширине, Ошибка бросается.protected void handleJustify(float justificationWidth)
Некоторый код может положиться на immutablity разметок. Подклассификаторы не должны вызвать это непосредственно, но вместо этого должны вызвать getJustifiedLayout, который вызовет этот метод на клоне этого расположения, сохраняя оригинал.
justificationWidth
- ширина, чтобы использовать, выравнивая строку. Для лучших результатов это не должно слишком отличаться от текущего усовершенствования строки.getJustifiedLayout(float)
public byte getBaseline()
TextLayout
. Базовая линия является одним из значений, определенных в Font
, которые являются римскими, центрируются и зависание. Подъем и спуск относительно этой базовой линии. baselineOffsets
также относительно этой базовой линии.TextLayout
.getBaselineOffsets()
, Font
public float[] getBaselineOffsets()
TextLayout
. Массив индексируется одним из значений, определенных в Font
, которые являются римскими, центрируются и зависание. Значения относительно этого TextLayout
базовая линия объекта, так, чтобы getBaselineOffsets[getBaseline()] == 0
. Смещения добавляются к позиции TextLayout
базовая линия объекта, чтобы получить позицию для новой базовой линии.
TextLayout
.getBaseline()
, Font
public float getAdvance()
TextLayout
. Усовершенствование является расстоянием от источника до усовершенствования самого правого (самого нижнего) символа. Это находится в базово-относительных координатах.TextLayout
.public float getVisibleAdvance()
TextLayout
, минус запаздывающий пробел. Это находится в базово-относительных координатах.TextLayout
без запаздывающего пробела.getAdvance()
public float getAscent()
TextLayout
. Подъем является расстоянием от вершины (право) на TextLayout
к базовой линии. Это всегда или положительно или нуль. Подъем достаточен, чтобы разместить преобразованный в верхний индекс текст и является максимумом суммы подъема, смещения, и базовой линии каждого глифа. Подъем является максимальным подъемом от базовой линии всего текста в TextLayout. Это находится в базово-относительных координатах.TextLayout
.public float getDescent()
TextLayout
. Спуск является расстоянием от базовой линии до нижней части (оставленной) TextLayout
. Это всегда или положительно или нуль. Спуск достаточен, чтобы разместить преобразованный в нижний индекс текст и является максимумом суммы спуска, смещения, и базовой линии каждого глифа. Это - максимальный спуск от базовой линии всего текста в TextLayout. Это находится в базово-относительных координатах.TextLayout
.public float getLeading()
TextLayout
. Продвижение является предложенным интервалом шпона для этого TextLayout
. Это находится в базово-относительных координатах. Продвижение вычисляется из продвижения, спуска, и базовой линии всего glyphvectors в TextLayout
. Алгоритм примерно следующие:
maxD = 0; maxDL = 0; for (GlyphVector g in all glyphvectors) { maxD = max(maxD, g.getDescent() + offsets[g.getBaseline()]); maxDL = max(maxDL, g.getDescent() + g.getLeading() + offsets[g.getBaseline()]); } return maxDL - maxD;
TextLayout
.public Rectangle2D getBounds()
TextLayout
. Границы находятся в стандартных координатах. Из-за эффектов растеризации, это ограничивает, не мог бы включить все пиксели, представленные TextLayout.
Это не могло бы совпасть точно с подъемом, спуском, источником или усовершенствованиемTextLayout
.Rectangle2D
это - границы этого TextLayout
.public Rectangle getPixelBounds(FontRenderContext frc, float x, float y)
TextLayout
когда представлено в графике с данным FontRenderContext
в данном расположении. Графический контекст рендеринга не должен быть тем же самым как FontRenderContext
используемый, чтобы создать это TextLayout
, и может быть нуль. Если это - нуль, FontRenderContext
из этого TextLayout
используется.frc
- FontRenderContext
из Graphics
.x
- x-координата, в которой можно представить это TextLayout
.y
- y-координата, в которой можно представить это TextLayout
.Rectangle
ограничение пикселей, на которые влияли бы.GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)
public boolean isLeftToRight()
true
если это TextLayout
имеет слева направо основное направление или false
если у этого есть справа налево основное направление. TextLayout
имеет основное направление или слева направо (LTR) или справа налево (RTL). Основное направление независимо от фактического направления текста на строке, которая может быть или LTR, RTL, или смешанный. Слева направо разметки по умолчанию должны расположить выравнивание по левой границе. Если расположение находится на снабженной вкладками строке, вкладки, выполненные слева направо, так, чтобы логически последовательная позиция разметок слева направо. Противоположность является истиной для разметок RTL. По умолчанию они должны расположить выравнивание по левой границе, и вкладки, выполненные справа налево.true
если основное направление этого TextLayout
слева направо; false
иначе.public boolean isVertical()
true
если это TextLayout
вертикаль.true
если это TextLayout
вертикаль; false
иначе.public int getCharacterCount()
TextLayout
.TextLayout
.public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
hit
. Первый элемент массива является пересечением каре с базовой линией как расстояние вдоль базовой линии. Второй элемент массива является обратным наклоном (выполнение/повышение) каре, измеренного относительно базовой линии в той точке. Этот метод предназначается для информационного использования. Чтобы вывести на экран каре, лучше использовать getCaretShapes
.
hit
- хит на символе в этом TextLayout
bounds
- границы, к которым создается информация каре. Границы находятся в базово-относительных координатах.getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy)
, Font.getItalicAngle()
public float[] getCaretInfo(TextHitInfo hit)
hit
. Этот метод является перегрузкой удобства getCaretInfo
и использует естественные границы этого TextLayout
.hit
- хит на символе в этом TextLayout
public TextHitInfo getNextRightHit(TextHitInfo hit)
null
. Если индекс символа хита за пределы, IllegalArgumentException
бросается.hit
- хит на символе в этом расположенииnull
.public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy)
null
. Хит направо от сильного каре при указанном смещении, как определено указанной политикой. Возвращенный хит является более сильными из двух возможных хитов, как определено указанной политикой.offset
- вставка смещается в этом TextLayout
. Не могут быть меньше чем 0 или больше чем это TextLayout
символьное количество объекта.policy
- политика, используемая, чтобы выбрать сильное кареnull
.public TextHitInfo getNextRightHit(int offset)
null
. Хит направо от сильного каре при указанном смещении, как определено политикой по умолчанию. Возвращенный хит является более сильными из двух возможных хитов, как определено политикой по умолчанию.offset
- вставка смещается в этом TextLayout
. Не могут быть меньше чем 0 или больше чем TextLayout
символьное количество объекта.null
.public TextHitInfo getNextLeftHit(TextHitInfo hit)
null
. Если индекс символа хита за пределы, IllegalArgumentException
бросается.hit
- хит на символе в этом TextLayout
.null
.public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
null
. Хит налево от сильного каре при указанном смещении, как определено указанной политикой. Возвращенный хит является более сильными из двух возможных хитов, как определено указанной политикой.offset
- вставка смещается в этом TextLayout
. Не могут быть меньше чем 0 или больше чем это TextLayout
символьное количество объекта.policy
- политика, используемая, чтобы выбрать сильное кареnull
.public TextHitInfo getNextLeftHit(int offset)
null
. Хит налево от сильного каре при указанном смещении, как определено политикой по умолчанию. Возвращенный хит является более сильными из двух возможных хитов, как определено политикой по умолчанию.offset
- вставка смещается в этом TextLayout
. Не могут быть меньше чем 0 или больше чем это TextLayout
символьное количество объекта.null
.public TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit
- указанный хитpublic Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
Shape
представление каре при указанном хите в указанных границах.hit
- напавший, чтобы генерировать кареbounds
- границы TextLayout
использовать в генерировании каре. Границы находятся в базово-относительных координатах.Shape
представление каре. Возвращенная форма находится в стандартных координатах.public Shape getCaretShape(TextHitInfo hit)
Shape
представление каре при указанном хите в естественных границах этого TextLayout
.hit
- напавший, чтобы генерировать кареShape
представление каре. Возвращенная форма находится в стандартных координатах.public byte getCharacterLevel(int index)
index
. Индексы-1 и characterCount
присваиваются основной уровень этого TextLayout
.index
- индекс символа, от которого можно получить уровеньpublic Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
offset
- смещение в этом TextLayout
bounds
- границы, до которых можно расширить каре. Границы находятся в базово-относительных координатах.policy
- указанное CaretPolicy
null
. Возвращенные формы находятся в стандартных координатах.public Shape[] getCaretShapes(int offset, Rectangle2D bounds)
getCaretShapes
это использует политику каре по умолчанию.offset
- смещение в этом TextLayout
bounds
- границы, до которых можно расширить каре. Это находится в базово-относительных координатах.DEFAULT_CARET_POLICY
. Они находятся в стандартных координатах.public Shape[] getCaretShapes(int offset)
getCaretShapes
это использует политику каре по умолчанию и это TextLayout
естественные границы объекта.offset
- смещение в этом TextLayout
DEFAULT_CARET_POLICY
. Они находятся в стандартных координатах.public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
firstEndpoint
- конечная точка визуального диапазонаsecondEndpoint
- другая конечная точка визуального диапазона. Эта конечная точка может быть меньше чем firstEndpoint
.getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
bounds
. Если выбор включает крайнюю левую (самую верхнюю) позицию, выбор расширяется на левое (вершина) bounds
. Если выбор включает самую правую (самую нижнюю) позицию, выбор расширяется на право (нижняя часть) границ. Высота (ширина на вертикальных строках) выбора всегда расширяется на bounds
.
Хотя выбор всегда непрерывен, логически выбранный текст может быть несмежным на строках с текстом смешанного направления. Логические диапазоны выбранного текста могут быть получены, используя getLogicalRangesForVisualSelection
. Например, считайте текст 'ABCdef', где прописные буквы указывают справа налево на текст, представленный на справа налево строка, с визуальным выбором от 0L (передний край) к 3T (запаздывающий край 'd'). Текст появляется следующим образом с полужирными подчеркнутыми областями, представляющими выбор:
defCBAЛогические диапазоны выбора 0-3, 4-6 (ABC, ef), потому что визуально непрерывный текст является логически несмежным. Также отметьте, что, так как самая правая позиция на расположении (направо от) выбирается, выбор расширяется направо от границ.
firstEndpoint
- один конец визуального выбораsecondEndpoint
- другой конец визуального выбораbounds
- ограничительный прямоугольник, до которого можно расширить выбор. Это находится в базово-относительных координатах.Shape
включение выбора. Это находится в стандартных координатах.getLogicalRangesForVisualSelection(TextHitInfo, TextHitInfo)
, getLogicalHighlightShape(int, int, Rectangle2D)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
Shape
включение визуального выбора в указанном диапазоне, расширенном на границы. Этот метод является перегрузкой удобства getVisualHighlightShape
это использует естественные границы этого TextLayout
.firstEndpoint
- один конец визуального выбораsecondEndpoint
- другой конец визуального выбораShape
включение выбора. Это находится в стандартных координатах.public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
Shape
включение логического выбора в указанном диапазоне, расширенном на указанное bounds
. Если диапазон выбора включает первый логический символ, выбор расширяется на часть bounds
перед запуском этого TextLayout
. Если диапазон включает последний логический символ, выбор расширяется на часть bounds
после конца этого TextLayout
. Высота (ширина на вертикальных строках) выбора всегда расширяется на bounds
.
Выбор может быть несмежным на строках с текстом смешанного направления. Только те символы в логическом диапазоне между запуском и пределом кажутся выбранными. Например, считайте текст 'ABCdef', где прописные буквы указывают справа налево на текст, представленный на справа налево строка, с логическим выбором от 0 до 4 ('ABCd'). Текст появляется следующим образом с полужирным положением в для выбора, и подчеркивания для расширения:
defCBAВыбор является несмежным, потому что выбранные символы являются визуально несмежными. Также отметьте, что, так как диапазон включает первый логический символ (A), выбор расширяется на часть
bounds
перед запуском расположения, которое в этом случае (справа налево строка) является правильной частью bounds
.firstEndpoint
- конечная точка в диапазоне символов, чтобы выбратьsecondEndpoint
- другая конечная точка диапазона символов, чтобы выбрать. Могут быть меньше чем firstEndpoint
. Диапазон включает символ в минуту (firstEndpoint, secondEndpoint), но исключает максимальный (firstEndpoint, secondEndpoint).bounds
- ограничительный прямоугольник, до которого можно расширить выбор. Это находится в базово-относительных координатах.getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
Shape
включение логического выбора в указанном диапазоне, расширенном на естественные границы этого TextLayout
. Этот метод является перегрузкой удобства getLogicalHighlightShape
это использует естественные границы этого TextLayout
.firstEndpoint
- конечная точка в диапазоне символов, чтобы выбратьsecondEndpoint
- другая конечная точка диапазона символов, чтобы выбрать. Могут быть меньше чем firstEndpoint
. Диапазон включает символ в минуту (firstEndpoint, secondEndpoint), но исключает максимальный (firstEndpoint, secondEndpoint).Shape
включение выбора. Это находится в стандартных координатах.public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
firstEndpoint
- один конец диапазона символовsecondEndpoint
- другой конец диапазона символов. Могут быть меньше чем firstEndpoint
.Shape
включение границ черного квадрата. Это находится в стандартных координатах.public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)
TextHitInfo
соответствие указанной точке. Координаты вне границ TextLayout
отобразитесь на хиты на переднем крае первого логического символа, или запаздывающем краю последнего логического символа, как соответствующий, независимо от позиции того символа в строке. Только направление вдоль базовой линии используется, чтобы сделать эту оценку.x
- x смещается от источника этого TextLayout
. Это находится в стандартных координатах.y
- y смещается от источника этого TextLayout
. Это находится в стандартных координатах.bounds
- границы TextLayout
. Это находится в базово-относительных координатах.public TextHitInfo hitTestChar(float x, float y)
TextHitInfo
соответствие указанной точке. Этот метод является перегрузкой удобства hitTestChar
это использует естественные границы этого TextLayout
.x
- x смещается от источника этого TextLayout
. Это находится в стандартных координатах.y
- y смещается от источника этого TextLayout
. Это находится в стандартных координатах.public int hashCode()
TextLayout
.hashCode
в классе Object
TextLayout
.Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
true
если указанное Object
a TextLayout
возразите и если указанное Object
равняется этому TextLayout
.equals
в классе Object
obj
- Object
протестировать на равенствоtrue
если указанное Object
равняется этому TextLayout
; false
иначе.Object.hashCode()
, HashMap
public boolean equals(TextLayout rhs)
true
если эти две разметки равны. Две разметки равны, если они содержат равный glyphvectors в том же самом порядке.rhs
- TextLayout
сравниться с этим TextLayout
true
если указанное TextLayout
равняется этому TextLayout
.public String toString()
TextLayout
.public void draw(Graphics2D g2, float x, float y)
TextLayout
в указанном расположении в указанном Graphics2D
контекст. Источник расположения помещается в x, y. Рендеринг может коснуться любой точки в пределах getBounds()
из этой позиции. Это листы g2
неизменный. Текст представляется вдоль базового пути.g2
- Graphics2D
контекст, в котором можно представить расположениеx
- X координат источника этого TextLayout
y
- координата Y источника этого TextLayout
getBounds()
public Shape getOutline(AffineTransform tx)
Shape
представление схемы этого TextLayout
.tx
- дополнительное AffineTransform
применяться к схеме этого TextLayout
.Shape
это - схема этого TextLayout
. Это находится в стандартных координатах.public LayoutPath getLayoutPath()
public void hitToPoint(TextHitInfo hit, Point2D point)
hit
- хит, чтобы проверить. Это должно быть допустимым хитом на TextLayout.point
- возвращенная точка. Точка находится в стандартных координатах.IllegalArgumentException
- если хит не допустим для TextLayout.NullPointerException
- если поражено или точка является нулем.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.