java.awt.font
public final class TextLayout extends Object implements Cloneable
Modifier and Type | Class and Description |
---|---|
static class |
TextLayout.CaretPolicy
Inner class describing a caret policy
|
Modifier and Type | Field and Description |
---|---|
static TextLayout.CaretPolicy |
DEFAULT_CARET_POLICY
The default caret policy.
|
Constructor and Description |
---|
TextLayout(AttributedCharacterIterator text,
FontRenderContext frc) |
TextLayout(String str,
Font font,
FontRenderContext frc)
Constructs a TextLayout.
|
TextLayout(String string,
Map<? extends AttributedCharacterIterator.Attribute,?> attributes,
FontRenderContext frc) |
Modifier and Type | Method and Description |
---|---|
protected Object |
clone()
This method may be called to create a new copy of the
Object.
|
void |
draw(Graphics2D g2,
float x,
float y) |
boolean |
equals(Object obj)
Determine whether this Object is semantically equal
to another Object.
|
boolean |
equals(TextLayout tl) |
float |
getAdvance() |
float |
getAscent() |
byte |
getBaseline() |
float[] |
getBaselineOffsets() |
Shape |
getBlackBoxBounds(int firstEndpoint,
int secondEndpoint) |
Rectangle2D |
getBounds() |
float[] |
getCaretInfo(TextHitInfo hit) |
float[] |
getCaretInfo(TextHitInfo hit,
Rectangle2D bounds) |
Shape |
getCaretShape(TextHitInfo hit) |
Shape |
getCaretShape(TextHitInfo hit,
Rectangle2D bounds) |
Shape[] |
getCaretShapes(int offset) |
Shape[] |
getCaretShapes(int offset,
Rectangle2D bounds) |
Shape[] |
getCaretShapes(int offset,
Rectangle2D bounds,
TextLayout.CaretPolicy policy) |
int |
getCharacterCount() |
byte |
getCharacterLevel(int index) |
float |
getDescent() |
TextLayout |
getJustifiedLayout(float justificationWidth) |
float |
getLeading() |
Shape |
getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint) |
Shape |
getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint,
Rectangle2D bounds) |
int[] |
getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint) |
TextHitInfo |
getNextLeftHit(int offset) |
TextHitInfo |
getNextLeftHit(int offset,
TextLayout.CaretPolicy policy) |
TextHitInfo |
getNextLeftHit(TextHitInfo hit) |
TextHitInfo |
getNextRightHit(int offset) |
TextHitInfo |
getNextRightHit(int offset,
TextLayout.CaretPolicy policy) |
TextHitInfo |
getNextRightHit(TextHitInfo hit) |
Shape |
getOutline(AffineTransform tx) |
float |
getVisibleAdvance() |
Shape |
getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint) |
Shape |
getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint,
Rectangle2D bounds) |
TextHitInfo |
getVisualOtherHit(TextHitInfo hit) |
protected void |
handleJustify(float justificationWidth)
This is a protected method of a
final class, meaning
it exists only to taunt you. |
int |
hashCode()
Get a value that represents this Object, as uniquely as
possible within the confines of an int.
|
TextHitInfo |
hitTestChar(float x,
float y) |
TextHitInfo |
hitTestChar(float x,
float y,
Rectangle2D bounds)
Finds the character hit at the specified point.
|
boolean |
isLeftToRight() |
boolean |
isVertical() |
String |
toString()
Convert this Object to a human-readable String.
|
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
public TextLayout(String str, Font font, FontRenderContext frc)
public TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
protected Object clone()
Object
o == o.clone()
is falseo.getClass() == o.clone().getClass()
is trueo.equals(o)
is trueHowever, these are not strict requirements, and may
be violated if necessary. Of the three requirements, the
last is the most commonly violated, particularly if the
subclass does not override Object.equals(Object)
.
If the Object you call clone() on does not implement
Cloneable
(which is a placeholder interface), then
a CloneNotSupportedException is thrown. Notice that
Object does not implement Cloneable; this method exists
as a convenience for subclasses that do.
Object's implementation of clone allocates space for the new Object using the correct class, without calling any constructors, and then fills in all of the new field values with the old field values. Thus, it is a shallow copy. However, subclasses are permitted to make a deep copy.
All array types implement Cloneable, and override
this method as follows (it should never fail):
public Object clone() { try { super.clone(); } catch (CloneNotSupportedException e) { throw new InternalError(e.getMessage()); } }
public void draw(Graphics2D g2, float x, float y)
public boolean equals(Object obj)
Object
There are some fairly strict requirements on this
method which subclasses must follow:
a.equals(b)
and
b.equals(c)
, then a.equals(c)
must be true as well.a.equals(b)
and
b.equals(a)
must have the same value.a.equals(a)
must
always be true.a.equals(null)
must be false.a.equals(b)
must imply
a.hashCode() == b.hashCode()
.
The reverse is not true; two objects that are not
equal may have the same hashcode, but that has
the potential to harm hashing performance.This is typically overridden to throw a ClassCastException
if the argument is not comparable to the class performing
the comparison, but that is not a requirement. It is legal
for a.equals(b)
to be true even though
a.getClass() != b.getClass()
. Also, it
is typical to never cause a NullPointerException
.
In general, the Collections API (java.util
) use the
equals
method rather than the ==
operator to compare objects. However, IdentityHashMap
is an exception to this rule, for its own good reasons.
The default implementation returns this == o
.
equals
in class Object
obj
- the Object to compare toObject.hashCode()
public boolean equals(TextLayout tl)
public float getAdvance()
public float getAscent()
public byte getBaseline()
public float[] getBaselineOffsets()
public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
public Rectangle2D getBounds()
public float[] getCaretInfo(TextHitInfo hit)
public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
public Shape getCaretShape(TextHitInfo hit)
public Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
public Shape[] getCaretShapes(int offset)
public Shape[] getCaretShapes(int offset, Rectangle2D bounds)
public Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
public int getCharacterCount()
public byte getCharacterLevel(int index)
public float getDescent()
public TextLayout getJustifiedLayout(float justificationWidth)
public float getLeading()
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
public TextHitInfo getNextLeftHit(int offset)
public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
public TextHitInfo getNextLeftHit(TextHitInfo hit)
public TextHitInfo getNextRightHit(int offset)
public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy)
public TextHitInfo getNextRightHit(TextHitInfo hit)
public Shape getOutline(AffineTransform tx)
public float getVisibleAdvance()
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
public TextHitInfo getVisualOtherHit(TextHitInfo hit)
protected void handleJustify(float justificationWidth)
final
class, meaning
it exists only to taunt you.public TextHitInfo hitTestChar(float x, float y)
public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)
bounds
rectangle. That
means that in the case where a point is outside these bounds, this method
returns the leading edge of the first character or the trailing edge of
the last character.x
- the X location to testy
- the Y location to testbounds
- the bounds to test againstpublic boolean isLeftToRight()
public boolean isVertical()
public int hashCode()
Object
There are some requirements on this method which
subclasses must follow:
a.equals(b)
is true, then
a.hashCode() == b.hashCode()
must be as well.
However, the reverse is not necessarily true, and two
objects may have the same hashcode without being equal.Notice that since hashCode
is used in
Hashtable
and other hashing classes,
a poor implementation will degrade the performance of hashing
(so don't blindly implement it as returning a constant!). Also,
if calculating the hash is time-consuming, a class may consider
caching the results.
The default implementation returns
System.identityHashCode(this)
hashCode
in class Object
Object.equals(Object)
,
System.identityHashCode(Object)
public String toString()
Object
System.out.println()
and such.
It is typical, but not required, to ensure that this method
never completes abruptly with a RuntimeException
.
This method will be called when performing string
concatenation with this object. If the result is
null
, string concatenation will instead
use "null"
.
The default implementation returns
getClass().getName() + "@" +
Integer.toHexString(hashCode())
.
toString
in class Object
Object.getClass()
,
Object.hashCode()
,
Class.getName()
,
Integer.toHexString(int)