Spec-Zone.ru › OpenJDK 27

Class DefaultCaret

java.lang.Object
java.awt.geom.RectangularShape
java.awt.geom.Rectangle2D
java.awt.Rectangle
javax.swing.text.DefaultCaret
All Implemented Interfaces:
FocusListener, MouseListener, MouseMotionListener, Shape, Serializable, Cloneable, EventListener, Caret
Direct Known Subclasses:
BasicTextUI.BasicCaret
public class DefaultCaret extends Rectangle implements Caret, FocusListener, MouseListener, MouseMotionListener
A default implementation of Caret. The caret is rendered as a vertical line in the color specified by the CaretColor property of the associated JTextComponent. It can blink at the rate specified by the BlinkRate property.

This implementation expects two sources of asynchronous notification. The timer thread fires asynchronously, and causes the caret to simply repaint the most recent bounding box. The caret also tracks change as the document is modified. Typically this will happen on the event dispatch thread as a result of some mouse or keyboard event. The caret behavior on both synchronous and asynchronous documents updates is controlled by UpdatePolicy property. The repaint of the new caret location will occur on the event thread in any case, as calls to modelToView are only safe on the event thread.

The caret acts as a mouse and focus listener on the text component it has been installed in, and defines the caret semantics based upon those events. The listener methods can be reimplemented to change the semantics. By default, the first mouse button will be used to set focus and caret position. Dragging the mouse pointer with the first mouse button will sweep out a selection that is contiguous in the model. If the associated text component is editable, the caret will become visible when focus is gained, and invisible when focus is lost.

The Highlighter bound to the associated text component is used to render the selection by default. Selection appearance can be customized by supplying a painter to use for the highlights. By default a painter is used that will render a solid color as specified in the associated text component in the SelectionColor property. This can easily be changed by reimplementing the getSelectionPainter method.

A customized caret appearance can be achieved by reimplementing the paint method. If the paint method is changed, the damage method should also be reimplemented to cause a repaint for the area needed to render the caret. The caret extends the Rectangle class which is used to hold the bounding box for where the caret was last rendered. This enables the caret to repaint in a thread-safe manner when the caret moves without making a call to modelToView which is unstable between model updates and view repair (i.e. the order of delivery to DocumentListeners is not guaranteed).

The magic caret position is set to null when the caret position changes. A timer is used to determine the new location (after the caret change). When the timer fires, if the magic caret position is still null it is reset to the current caret position. Any actions that change the caret position and want the magic caret position to remain the same, must remember the magic caret position, change the cursor, and then set the magic caret position to its original value. This has the benefit that only actions that want the magic caret position to persist (such as open/down) need to know about it.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans package. Please see XMLEncoder.

See Also:
  • Caret

Nested Class Summary

Nested classes/interfaces declared in class Rectangle2D

Rectangle2D.Double, Rectangle2D.Float
Modifier and Type Class Description
static class  Rectangle2D.Double
The Double class defines a rectangle specified in double coordinates.
static class  Rectangle2D.Float
The Float class defines a rectangle specified in float coordinates.

Field Summary

Modifier and Type Field Description
static final int ALWAYS_UPDATE
Indicates that the caret position is to be always updated accordingly to the document changes regardless whether the document updates are performed on the Event Dispatching Thread or not.
protected ChangeEvent changeEvent
The change event for the model.
protected EventListenerList listenerList
The event listener list.
static final int NEVER_UPDATE
Indicates that the caret should remain at the same absolute position in the document regardless of any document updates, except when the document length becomes less than the current caret position due to removal.
static final int UPDATE_WHEN_ON_EDT
Indicates that the caret position is to be updated only when document changes are performed on the Event Dispatching Thread.

Fields declared in class Rectangle

height, width, x, y
Modifier and Type Field Description
int height
The height of the Rectangle.
int width
The width of the Rectangle.
int x
The X coordinate of the upper-left corner of the Rectangle.
int y
The Y coordinate of the upper-left corner of the Rectangle.

Fields declared in class Rectangle2D

OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
Modifier and Type Field Description
static final int OUT_BOTTOM
The bitmask that indicates that a point lies below this Rectangle2D.
static final int OUT_LEFT
The bitmask that indicates that a point lies to the left of this Rectangle2D.
static final int OUT_RIGHT
The bitmask that indicates that a point lies to the right of this Rectangle2D.
static final int OUT_TOP
The bitmask that indicates that a point lies above this Rectangle2D.

Constructor Summary

Constructor Description
DefaultCaret()
Constructs a default caret.

Method Summary

Modifier and Type Method Description
void addChangeListener(ChangeListener l)
Adds a listener to track whenever the caret position has been changed.
protected void adjustVisibility(Rectangle nloc)
Scrolls the associated view (if necessary) to make the caret visible.
protected void damage(Rectangle r)
Damages the area surrounding the caret to cause it to be repainted in a new location.
void deinstall(JTextComponent c)
Called when the UI is being removed from the interface of a JTextComponent.
boolean equals(Object obj)
Compares this object to the specified object.
protected void fireStateChanged()
Notifies all listeners that have registered interest for notification on this event type.
void focusGained(FocusEvent e)
Called when the component containing the caret gains focus.
void focusLost(FocusEvent e)
Called when the component containing the caret loses focus.
int getBlinkRate()
Gets the caret blink rate.
ChangeListener[] getChangeListeners()
Returns an array of all the change listeners registered on this caret.
protected final JTextComponent getComponent()
Gets the text editor component that this caret is bound to.
int getDot()
Fetches the current position of the caret.
Position.Bias getDotBias()
Returns the bias of the caret position.
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
Returns an array of all the objects currently registered as FooListeners upon this caret.
Point getMagicCaretPosition()
Gets the saved caret position.
int getMark()
Fetches the current position of the mark.
Position.Bias getMarkBias()
Returns the bias of the mark.
protected Highlighter.HighlightPainter getSelectionPainter()
Gets the painter for the Highlighter.
int getUpdatePolicy()
Gets the caret movement policy on document updates.
void install(JTextComponent c)
Called when the UI is being installed into the interface of a JTextComponent.
boolean isActive()
Determines if the caret is currently active.
boolean isSelectionVisible()
Checks whether the current selection is visible.
boolean isVisible()
Indicates whether or not the caret is currently visible.
void mouseClicked(MouseEvent e)
Called when the mouse is clicked.
void mouseDragged(MouseEvent e)
Moves the caret position according to the mouse pointer's current location.
void mouseEntered(MouseEvent e)
Called when the mouse enters a region.
void mouseExited(MouseEvent e)
Called when the mouse exits a region.
void mouseMoved(MouseEvent e)
Called when the mouse is moved.
void mousePressed(MouseEvent e)
If button 1 is pressed, this is implemented to request focus on the associated text component, and to set the caret position.
void mouseReleased(MouseEvent e)
Called when the mouse is released.
protected void moveCaret(MouseEvent e)
Tries to move the position of the caret from the coordinates of a mouse event, using viewToModel().
void moveDot(int dot)
Moves the caret position to the specified position, with a forward bias.
void moveDot(int dot, Position.Bias dotBias)
Moves the caret position to the specified position, with the specified bias.
void paint(Graphics g)
Renders the caret as a vertical line.
protected void positionCaret(MouseEvent e)
Tries to set the position of the caret from the coordinates of a mouse event, using viewToModel().
void removeChangeListener(ChangeListener l)
Removes a listener that was tracking caret position changes.
protected final void repaint()
Cause the caret to be painted.
void setBlinkRate(int rate)
Sets the caret blink rate.
void setDot(int dot)
Sets the caret position and mark to the specified position, with a forward bias.
void setDot(int dot, Position.Bias dotBias)
Sets the caret position and mark to the specified position, with the specified bias.
void setMagicCaretPosition(Point p)
Saves the current caret position.
void setSelectionVisible(boolean vis)
Changes the selection visibility.
void setUpdatePolicy(int policy)
Sets the caret movement policy on the document updates.
void setVisible(boolean e)
Sets the caret visibility, and repaints the caret.

Methods declared in class Rectangle

add, add, add, contains, contains, contains, contains, createIntersection, createUnion, getBounds, getBounds2D, getHeight, getLocation, getSize, getWidth, getX, getY, grow, inside, intersection, intersects, isEmpty, move, outcode, reshape, resize, setBounds, setBounds, setLocation, setLocation, setRect, setSize, setSize, toString, translate, union
Modifier and Type Method Description
void add(int newx, int newy)
Adds a point, specified by the integer arguments newx,newy to the bounds of this Rectangle.
void add(Point pt)
Adds the specified Point to the bounds of this Rectangle.
void add(Rectangle r)
Adds a Rectangle to this Rectangle.
boolean contains(int x, int y)
Checks whether or not this Rectangle contains the point at the specified location (x,y).
boolean contains(int X, int Y, int W, int H)
Checks whether this Rectangle entirely contains the Rectangle at the specified location (X,Y) with the specified dimensions (W,H).
boolean contains(Point p)
Checks whether or not this Rectangle contains the specified Point.
boolean contains(Rectangle r)
Checks whether or not this Rectangle entirely contains the specified Rectangle.
Rectangle2D createIntersection(Rectangle2D r)
Returns a new Rectangle2D object representing the intersection of this Rectangle2D with the specified Rectangle2D.
Rectangle2D createUnion(Rectangle2D r)
Returns a new Rectangle2D object representing the union of this Rectangle2D with the specified Rectangle2D.
Rectangle getBounds()
Gets the bounding Rectangle of this Rectangle.
Rectangle2D getBounds2D()
Returns a high precision and more accurate bounding box of the Shape than the getBounds method.
double getHeight()
Returns the height of the bounding Rectangle in double precision.
Point getLocation()
Returns the location of this Rectangle.
Dimension getSize()
Gets the size of this Rectangle, represented by the returned Dimension.
double getWidth()
Returns the width of the bounding Rectangle in double precision.
double getX()
Returns the X coordinate of the bounding Rectangle in double precision.
double getY()
Returns the Y coordinate of the bounding Rectangle in double precision.
void grow(int h, int v)
Resizes the Rectangle both horizontally and vertically.
boolean inside(int X, int Y)
Deprecated.
As of JDK version 1.1, replaced by contains(int, int).
Rectangle intersection(Rectangle r)
Computes the intersection of this Rectangle with the specified Rectangle.
boolean intersects(Rectangle r)
Determines whether or not this Rectangle and the specified Rectangle intersect.
boolean isEmpty()
Determines whether the RectangularShape is empty.
void move(int x, int y)
Deprecated.
As of JDK version 1.1, replaced by setLocation(int, int).
int outcode(double x, double y)
Determines where the specified coordinates lie with respect to this Rectangle2D.
void reshape(int x, int y, int width, int height)
Deprecated.
As of JDK version 1.1, replaced by setBounds(int, int, int, int).
void resize(int width, int height)
Deprecated.
As of JDK version 1.1, replaced by setSize(int, int).
void setBounds(int x, int y, int width, int height)
Sets the bounding Rectangle of this Rectangle to the specified x, y, width, and height.
void setBounds(Rectangle r)
Sets the bounding Rectangle of this Rectangle to match the specified Rectangle.
void setLocation(int x, int y)
Moves this Rectangle to the specified location.
void setLocation(Point p)
Moves this Rectangle to the specified location.
void setRect(double x, double y, double width, double height)
Sets the bounds of this Rectangle to the integer bounds which encompass the specified x, y, width, and height.
void setSize(int width, int height)
Sets the size of this Rectangle to the specified width and height.
void setSize(Dimension d)
Sets the size of this Rectangle to match the specified Dimension.
String toString()
Returns a String representing this Rectangle and its values.
void translate(int dx, int dy)
Translates this Rectangle the indicated distance, to the right along the X coordinate axis, and downward along the Y coordinate axis.
Rectangle union(Rectangle r)
Computes the union of this Rectangle with the specified Rectangle.

Methods declared in class Rectangle2D

add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
Modifier and Type Method Description
void add(double newx, double newy)
Adds a point, specified by the double precision arguments newx and newy, to this Rectangle2D.
void add(Point2D pt)
Adds the Point2D object pt to this Rectangle2D.
void add(Rectangle2D r)
Adds a Rectangle2D object to this Rectangle2D.
boolean contains(double x, double y)
Tests if the specified coordinates are inside the boundary of the Shape, as described by the definition of insideness.
boolean contains(double x, double y, double w, double h)
Tests if the interior of the Shape entirely contains the specified rectangular area.
PathIterator getPathIterator(AffineTransform at)
Returns an iteration object that defines the boundary of this Rectangle2D.
PathIterator getPathIterator(AffineTransform at, double flatness)
Returns an iteration object that defines the boundary of the flattened Rectangle2D.
int hashCode()
Returns the hashcode for this Rectangle2D.
static void intersect(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
Intersects the pair of specified source Rectangle2D objects and puts the result into the specified destination Rectangle2D object.
boolean intersects(double x, double y, double w, double h)
Tests if the interior of the Shape intersects the interior of a specified rectangular area.
boolean intersectsLine(double x1, double y1, double x2, double y2)
Tests if the specified line segment intersects the interior of this Rectangle2D.
boolean intersectsLine(Line2D l)
Tests if the specified line segment intersects the interior of this Rectangle2D.
int outcode(Point2D p)
Determines where the specified Point2D lies with respect to this Rectangle2D.
void setFrame(double x, double y, double w, double h)
Sets the location and size of the outer bounds of this Rectangle2D to the specified rectangular values.
void setRect(Rectangle2D r)
Sets this Rectangle2D to be the same as the specified Rectangle2D.
static void union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
Unions the pair of source Rectangle2D objects and puts the result into the specified destination Rectangle2D object.

Methods declared in class RectangularShape

clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
Modifier and Type Method Description
Object clone()
Creates a new object of the same class and with the same contents as this object.
boolean contains(Point2D p)
Tests if a specified Point2D is inside the boundary of the Shape, as described by the definition of insideness.
boolean contains(Rectangle2D r)
Tests if the interior of the Shape entirely contains the specified Rectangle2D.
double getCenterX()
Returns the X coordinate of the center of the framing rectangle of the Shape in double precision.
double getCenterY()
Returns the Y coordinate of the center of the framing rectangle of the Shape in double precision.
Rectangle2D getFrame()
Returns the framing Rectangle2D that defines the overall shape of this object.
double getMaxX()
Returns the largest X coordinate of the framing rectangle of the Shape in double precision.
double getMaxY()
Returns the largest Y coordinate of the framing rectangle of the Shape in double precision.
double getMinX()
Returns the smallest X coordinate of the framing rectangle of the Shape in double precision.
double getMinY()
Returns the smallest Y coordinate of the framing rectangle of the Shape in double precision.
boolean intersects(Rectangle2D r)
Tests if the interior of the Shape intersects the interior of a specified Rectangle2D.
void setFrame(Point2D loc, Dimension2D size)
Sets the location and size of the framing rectangle of this Shape to the specified Point2D and Dimension2D, respectively.
void setFrame(Rectangle2D r)
Sets the framing rectangle of this Shape to be the specified Rectangle2D.
void setFrameFromCenter(double centerX, double centerY, double cornerX, double cornerY)
Sets the framing rectangle of this Shape based on the specified center point coordinates and corner point coordinates.
void setFrameFromCenter(Point2D center, Point2D corner)
Sets the framing rectangle of this Shape based on a specified center Point2D and corner Point2D.
void setFrameFromDiagonal(double x1, double y1, double x2, double y2)
Sets the diagonal of the framing rectangle of this Shape based on the two specified coordinates.
void setFrameFromDiagonal(Point2D p1, Point2D p2)
Sets the diagonal of the framing rectangle of this Shape based on two specified Point2D objects.

Methods declared in class Object

finalize, getClass, notify, notifyAll, wait, wait, wait
Modifier and Type Method Description
protected void finalize()
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
final Class<?> getClass()
Returns the runtime class of this Object.
final void notify()
Wakes up a single thread that is waiting on this object's monitor.
final void notifyAll()
Wakes up all threads that are waiting on this object's monitor.
final void wait()
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
final void wait(long timeoutMillis)
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
final void wait(long timeoutMillis, int nanos)
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

Field Details

UPDATE_WHEN_ON_EDT

public static final int UPDATE_WHEN_ON_EDT
Indicates that the caret position is to be updated only when document changes are performed on the Event Dispatching Thread.
Since:
1.5
See Also:
  • setUpdatePolicy(int)
  • getUpdatePolicy()
  • Constant Field Values

NEVER_UPDATE

public static final int NEVER_UPDATE
Indicates that the caret should remain at the same absolute position in the document regardless of any document updates, except when the document length becomes less than the current caret position due to removal. In that case the caret position is adjusted to the end of the document.
Since:
1.5
See Also:
  • setUpdatePolicy(int)
  • getUpdatePolicy()
  • Constant Field Values

ALWAYS_UPDATE

public static final int ALWAYS_UPDATE
Indicates that the caret position is to be always updated accordingly to the document changes regardless whether the document updates are performed on the Event Dispatching Thread or not.
Since:
1.5
See Also:
  • setUpdatePolicy(int)
  • getUpdatePolicy()
  • Constant Field Values

listenerList

protected EventListenerList listenerList
The event listener list.

changeEvent

protected transient ChangeEvent changeEvent
The change event for the model. Only one ChangeEvent is needed per model instance since the event's only (read-only) state is the source property. The source of events generated here is always "this".

Constructor Details

DefaultCaret

public DefaultCaret()
Constructs a default caret.

Method Details

setUpdatePolicy

public void setUpdatePolicy(int policy)
Sets the caret movement policy on the document updates. Normally the caret updates its absolute position within the document on insertions occurred before or at the caret position and on removals before the caret position. 'Absolute position' means here the position relative to the start of the document. For example if a character is typed within editable text component it is inserted at the caret position and the caret moves to the next absolute position within the document due to insertion and if BACKSPACE is typed then caret decreases its absolute position due to removal of a character before it. Sometimes it may be useful to turn off the caret position updates so that the caret stays at the same absolute position within the document position regardless of any document updates.

The following update policies are allowed:

  • NEVER_UPDATE: the caret stays at the same absolute position in the document regardless of any document updates, except when document length becomes less than the current caret position due to removal. In that case caret position is adjusted to the end of the document. The caret doesn't try to keep itself visible by scrolling the associated view when using this policy.
  • ALWAYS_UPDATE: the caret always tracks document changes. For regular changes it increases its position if an insertion occurs before or at its current position, and decreases position if a removal occurs before its current position. For undo/redo updates it is always moved to the position where update occurred. The caret also tries to keep itself visible by calling adjustVisibility method.
  • UPDATE_WHEN_ON_EDT: acts like ALWAYS_UPDATE if the document updates are performed on the Event Dispatching Thread and like NEVER_UPDATE if updates are performed on other thread.

The default property value is UPDATE_WHEN_ON_EDT.

Parameters:
policy - one of the following values : UPDATE_WHEN_ON_EDT, NEVER_UPDATE, ALWAYS_UPDATE
Throws:
IllegalArgumentException - if invalid value is passed
Since:
1.5
See Also:
  • getUpdatePolicy()
  • adjustVisibility(Rectangle)
  • UPDATE_WHEN_ON_EDT
  • NEVER_UPDATE
  • ALWAYS_UPDATE

getUpdatePolicy

public int getUpdatePolicy()
Gets the caret movement policy on document updates.
Returns:
one of the following values : UPDATE_WHEN_ON_EDT, NEVER_UPDATE, ALWAYS_UPDATE
Since:
1.5
See Also:
  • setUpdatePolicy(int)
  • UPDATE_WHEN_ON_EDT
  • NEVER_UPDATE
  • ALWAYS_UPDATE

getComponent

protected final JTextComponent getComponent()
Gets the text editor component that this caret is bound to.
Returns:
the component

repaint

protected final void repaint()
Cause the caret to be painted. The repaint area is the bounding box of the caret (i.e. the caret rectangle or this).

This method is thread safe, although most Swing methods are not. Please see Concurrency in Swing for more information.

damage

protected void damage(Rectangle r)
Damages the area surrounding the caret to cause it to be repainted in a new location. If paint() is reimplemented, this method should also be reimplemented. This method should update the caret bounds (x, y, width, and height).
Parameters:
r - the current location of the caret
See Also:
  • paint(Graphics)

adjustVisibility

protected void adjustVisibility(Rectangle nloc)
Scrolls the associated view (if necessary) to make the caret visible. Since how this should be done is somewhat of a policy, this method can be reimplemented to change the behavior. By default the scrollRectToVisible method is called on the associated component.
Parameters:
nloc - the new position to scroll to

getSelectionPainter

protected Highlighter.HighlightPainter getSelectionPainter()
Gets the painter for the Highlighter.
Returns:
the painter

positionCaret

protected void positionCaret(MouseEvent e)
Tries to set the position of the caret from the coordinates of a mouse event, using viewToModel().
Parameters:
e - the mouse event

moveCaret

protected void moveCaret(MouseEvent e)
Tries to move the position of the caret from the coordinates of a mouse event, using viewToModel(). This will cause a selection if the dot and mark are different.
Parameters:
e - the mouse event

focusGained

public void focusGained(FocusEvent e)
Called when the component containing the caret gains focus. This is implemented to set the caret to visible if the component is editable.
Specified by:
focusGained in interface FocusListener
Parameters:
e - the focus event
See Also:
  • FocusListener.focusGained(FocusEvent)

focusLost

public void focusLost(FocusEvent e)
Called when the component containing the caret loses focus. This is implemented to set the caret to visibility to false.
Specified by:
focusLost in interface FocusListener
Parameters:
e - the focus event
See Also:
  • FocusListener.focusLost(FocusEvent)

mouseClicked

public void mouseClicked(MouseEvent e)
Called when the mouse is clicked. If the click was generated from button1, a double click selects a word, and a triple click the current line.
Specified by:
mouseClicked in interface MouseListener
Parameters:
e - the mouse event
See Also:
  • MouseListener.mouseClicked(MouseEvent)

mousePressed

public void mousePressed(MouseEvent e)
If button 1 is pressed, this is implemented to request focus on the associated text component, and to set the caret position. If the shift key is held down, the caret will be moved, potentially resulting in a selection, otherwise the caret position will be set to the new location. If the component is not enabled, there will be no request for focus.
Specified by:
mousePressed in interface MouseListener
Parameters:
e - the mouse event
See Also:
  • MouseListener.mousePressed(MouseEvent)

mouseReleased

public void mouseReleased(MouseEvent e)
Called when the mouse is released.
Specified by:
mouseReleased in interface MouseListener
Parameters:
e - the mouse event
See Also:
  • MouseListener.mouseReleased(MouseEvent)

mouseEntered

public void mouseEntered(MouseEvent e)
Called when the mouse enters a region.
Specified by:
mouseEntered in interface MouseListener
Parameters:
e - the mouse event
See Also:
  • MouseListener.mouseEntered(MouseEvent)

mouseExited

public void mouseExited(MouseEvent e)
Called when the mouse exits a region.
Specified by:
mouseExited in interface MouseListener
Parameters:
e - the mouse event
See Also:
  • MouseListener.mouseExited(MouseEvent)

mouseDragged

public void mouseDragged(MouseEvent e)
Moves the caret position according to the mouse pointer's current location. This effectively extends the selection. By default, this is only done for mouse button 1.
Specified by:
mouseDragged in interface MouseMotionListener
Parameters:
e - the mouse event
See Also:
  • MouseMotionListener.mouseDragged(MouseEvent)

mouseMoved

public void mouseMoved(MouseEvent e)
Called when the mouse is moved.
Specified by:
mouseMoved in interface MouseMotionListener
Parameters:
e - the mouse event
See Also:
  • MouseMotionListener.mouseMoved(MouseEvent)

paint

public void paint(Graphics g)
Renders the caret as a vertical line. If this is reimplemented the damage method should also be reimplemented as it assumes the shape of the caret is a vertical line. Sets the caret color to the value returned by getCaretColor().

If there are multiple text directions present in the associated document, a flag indicating the caret bias will be rendered. This will occur only if the associated document is a subclass of AbstractDocument and there are multiple bidi levels present in the bidi element structure (i.e. the text has multiple directions associated with it).

Specified by:
paint in interface Caret
Parameters:
g - the graphics context
See Also:
  • damage(Rectangle)

install

public void install(JTextComponent c)
Called when the UI is being installed into the interface of a JTextComponent. This can be used to gain access to the model that is being navigated by the implementation of this interface. Sets the dot and mark to 0, and establishes document, property change, focus, mouse, and mouse motion listeners.
Specified by:
install in interface Caret
Parameters:
c - the component
See Also:
  • Caret.install(JTextComponent)

deinstall

public void deinstall(JTextComponent c)
Called when the UI is being removed from the interface of a JTextComponent. This is used to unregister any listeners that were attached.
Specified by:
deinstall in interface Caret
Parameters:
c - the component
See Also:
  • Caret.deinstall(JTextComponent)

addChangeListener

public void addChangeListener(ChangeListener l)
Adds a listener to track whenever the caret position has been changed.
Specified by:
addChangeListener in interface Caret
Parameters:
l - the listener
See Also:
  • Caret.addChangeListener(ChangeListener)

removeChangeListener

public void removeChangeListener(ChangeListener l)
Removes a listener that was tracking caret position changes.
Specified by:
removeChangeListener in interface Caret
Parameters:
l - the listener
See Also:
  • Caret.removeChangeListener(ChangeListener)

getChangeListeners

public ChangeListener[] getChangeListeners()
Returns an array of all the change listeners registered on this caret.
Returns:
all of this caret's ChangeListeners or an empty array if no change listeners are currently registered
Since:
1.4
See Also:
  • addChangeListener(ChangeListener)
  • removeChangeListener(ChangeListener)

fireStateChanged

protected void fireStateChanged()
Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created using the parameters passed into the fire method. The listener list is processed last to first.
See Also:
  • EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
Returns an array of all the objects currently registered as FooListeners upon this caret. FooListeners are registered using the addFooListener method.

You can specify the listenerType argument with a class literal, such as FooListener.class. For example, you can query a DefaultCaret c for its change listeners with the following code:

ChangeListener[] cls = (ChangeListener[])(c.getListeners(ChangeListener.class));
If no such listeners exist, this method returns an empty array.
Type Parameters:
T - the listener type
Parameters:
listenerType - the type of listeners requested
Returns:
an array of all objects registered as FooListeners on this component, or an empty array if no such listeners have been added
Throws:
ClassCastException - if listenerType doesn't specify a class or interface that implements java.util.EventListener
Since:
1.3
See Also:
  • getChangeListeners()

setSelectionVisible

public void setSelectionVisible(boolean vis)
Changes the selection visibility.
Specified by:
setSelectionVisible in interface Caret
Parameters:
vis - the new visibility

isSelectionVisible

public boolean isSelectionVisible()
Checks whether the current selection is visible.
Specified by:
isSelectionVisible in interface Caret
Returns:
true if the selection is visible

isActive

public boolean isActive()
Determines if the caret is currently active.

This method returns whether or not the Caret is currently in a blinking state. It does not provide information as to whether it is currently blinked on or off. To determine if the caret is currently painted use the isVisible method.

Returns:
true if active else false
Since:
1.5
See Also:
  • isVisible()

isVisible

public boolean isVisible()
Indicates whether or not the caret is currently visible. As the caret flashes on and off the return value of this will change between true, when the caret is painted, and false, when the caret is not painted. isActive indicates whether or not the caret is in a blinking state, such that it can be visible, and isVisible indicates whether or not the caret is actually visible.

Subclasses that wish to render a different flashing caret should override paint and only paint the caret if this method returns true.

Specified by:
isVisible in interface Caret
Returns:
true if visible else false
See Also:
  • Caret.isVisible()
  • isActive()

setVisible

public void setVisible(boolean e)
Sets the caret visibility, and repaints the caret. It is important to understand the relationship between this method, isVisible and isActive. Calling this method with a value of true activates the caret blinking. Setting it to false turns it completely off. To determine whether the blinking is active, you should call isActive. In effect, isActive is an appropriate corresponding "getter" method for this one. isVisible can be used to fetch the current visibility status of the caret, meaning whether or not it is currently painted. This status will change as the caret blinks on and off.

Here's a list showing the potential return values of both isActive and isVisible after calling this method:

setVisible(true):

  • isActive(): true
  • isVisible(): true or false depending on whether or not the caret is blinked on or off

setVisible(false):

  • isActive(): false
  • isVisible(): false
Specified by:
setVisible in interface Caret
Parameters:
e - the visibility specifier
See Also:
  • isActive()
  • Caret.setVisible(boolean)

setBlinkRate

public void setBlinkRate(int rate)
Sets the caret blink rate.
Specified by:
setBlinkRate in interface Caret
Parameters:
rate - the rate in milliseconds, 0 to stop blinking
See Also:
  • Caret.setBlinkRate(int)

getBlinkRate

public int getBlinkRate()
Gets the caret blink rate.
Specified by:
getBlinkRate in interface Caret
Returns:
the delay in milliseconds. If this is zero the caret will not blink.
See Also:
  • Caret.getBlinkRate()

getDot

public int getDot()
Fetches the current position of the caret.
Specified by:
getDot in interface Caret
Returns:
the position >= 0
See Also:
  • Caret.getDot()

getMark

public int getMark()
Fetches the current position of the mark. If there is a selection, the dot and mark will not be the same.
Specified by:
getMark in interface Caret
Returns:
the position >= 0
See Also:
  • Caret.getMark()

setDot

public void setDot(int dot)
Sets the caret position and mark to the specified position, with a forward bias. This implicitly sets the selection range to zero.
Specified by:
setDot in interface Caret
Parameters:
dot - the position >= 0
See Also:
  • setDot(int, Position.Bias)
  • Caret.setDot(int)

moveDot

public void moveDot(int dot)
Moves the caret position to the specified position, with a forward bias.
Specified by:
moveDot in interface Caret
Parameters:
dot - the position >= 0
See Also:
  • moveDot(int, javax.swing.text.Position.Bias)
  • Caret.moveDot(int)

moveDot

public void moveDot(int dot, Position.Bias dotBias)
Moves the caret position to the specified position, with the specified bias.
Parameters:
dot - the position >= 0
dotBias - the bias for this position, not null
Throws:
IllegalArgumentException - if the bias is null
Since:
1.6
See Also:
  • Caret.moveDot(int)

setDot

public void setDot(int dot, Position.Bias dotBias)
Sets the caret position and mark to the specified position, with the specified bias. This implicitly sets the selection range to zero.
Parameters:
dot - the position >= 0
dotBias - the bias for this position, not null
Throws:
IllegalArgumentException - if the bias is null
Since:
1.6
See Also:
  • Caret.setDot(int)

getDotBias

public Position.Bias getDotBias()
Returns the bias of the caret position.
Returns:
the bias of the caret position
Since:
1.6

getMarkBias

public Position.Bias getMarkBias()
Returns the bias of the mark.
Returns:
the bias of the mark
Since:
1.6

setMagicCaretPosition

public void setMagicCaretPosition(Point p)
Saves the current caret position. This is used when caret up/down actions occur, moving between lines that have uneven end positions.
Specified by:
setMagicCaretPosition in interface Caret
Parameters:
p - the position
See Also:
  • getMagicCaretPosition()

getMagicCaretPosition

public Point getMagicCaretPosition()
Gets the saved caret position.
Specified by:
getMagicCaretPosition in interface Caret
Returns:
the position see #setMagicCaretPosition
See Also:
  • Caret.setMagicCaretPosition(Point)

equals

public boolean equals(Object obj)
Compares this object to the specified object. The superclass behavior of comparing rectangles is not desired, so this is changed to the Object behavior.
Overrides:
equals in class Rectangle
Parameters:
obj - the object to compare this font with
Returns:
true if the objects are equal; false otherwise
See Also:
  • Object.hashCode()
  • HashMap

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2026, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API