Класс DefaultCaret
- Все реализуемые интерфейсы:
-
FocusListener,MouseListener,MouseMotionListener,Shape,Serializable,Cloneable,EventListener,Caret
- Прямые известные подклассы:
BasicTextUI.BasicCaret
public class DefaultCaret extends Rectangle implements Caret, FocusListener, MouseListener, MouseMotionListener
Эта реализация ожидает двух источников асинхронного уведомления. Поток таймера генерирует асинхронные события, заставляя курсор просто перерисовывать последнюю область. Курсор также отслеживает изменения, происходящие при модификации документа. Обычно это происходит в потоке обработки событий в результате какого-либо события мыши или клавиатуры. Поведение курсора при синхронных и асинхронных обновлениях документа контролируется свойством UpdatePolicy. Перерисовка нового расположения курсора произойдет в потоке обработки событий в любом случае, так как вызовы modelToView безопасны только в потоке обработки событий.
Курсор действует как слушатель мыши и фокуса на текстовом компоненте, в котором он установлен, и определяет семантику курсора на основе этих событий. Методы слушателей можно переопределить для изменения семантики. По умолчанию первая кнопка мыши используется для установки фокуса и позиции курсора. Перетаскивание указателя мыши с первой кнопкой мыши создаст непрерывный выделенный диапазон в модели. Если связанный текстовый компонент редактируемый, курсор станет видимым при получении фокуса и невидимым при его потере.
По умолчанию для отрисовки выделения используется Highlighter, связанный со связанным текстовым компонентом. Внешний вид выделения можно настроить, указав painter для использования в выделении. По умолчанию используется painter, который отрисует сплошной цвет, заданный в связанном текстовом компоненте в свойстве SelectionColor. Это легко изменить, переопределив метод getSelectionPainter.
Настраиваемое отображение курсора можно получить, переопределив метод paint. Если метод paint изменен, метод damage также должен быть переопределен, чтобы вызвать перерисовку необходимой области для отрисовки курсора. Курсор расширяет класс Rectangle, который используется для хранения области, в которой курсор был последний раз отрисован. Это позволяет курсору перерисовываться потокобезопасным образом при перемещении без вызова modelToView, который нестабилен между обновлениями модели и исправлением представления (т. е. порядок доставки DocumentListeners не гарантируется).
Магическая позиция курсора устанавливается в null при изменении позиции курсора. Таймер используется для определения нового расположения (после изменения курсора). Когда таймер срабатывает, если магическая позиция курсора по-прежнему null, она устанавливается в текущую позицию курсора. Любые действия, которые изменяют позицию курсора и хотят, чтобы магическая позиция курсора осталась прежней, должны сохранить магическую позицию курсора, изменить курсор, а затем установить магическую позицию курсора в исходное значение. Это дает преимущество, что только те действия, которые хотят сохранить магическую позицию курсора (такие как открытие/вниз), должны знать о ней.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans была добавлена в пакет java.beans. См. XMLEncoder.
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе java.awt.geom.Rectangle2D
Rectangle2D.Double, Rectangle2D.Float
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
ALWAYS_UPDATE |
Указывает, что позиция курсора должна всегда обновляться в соответствии с изменениями документа независимо от того, выполняются ли обновления документа в потоке обработки событий или нет. |
protected ChangeEvent |
changeEvent |
Событие изменения модели. |
protected EventListenerList |
listenerList |
Список слушателей событий. |
static final int |
NEVER_UPDATE |
Указывает, что курсор должен оставаться в той же абсолютной позиции в документе независимо от любых обновлений документа, за исключением случаев, когда длина документа становится меньше текущей позиции курсора из-за удаления. |
static final int |
UPDATE_WHEN_ON_EDT |
Указывает, что позиция курсора должна обновляться только при изменениях документа, выполняемых в потоке обработки событий. |
Поля, объявленные в классе java.awt.geom.Rectangle2D
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DefaultCaret() |
Создает курсор по умолчанию. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addChangeListener |
Добавляет обработчик для отслеживания изменений позиции курсора. |
protected void |
adjustVisibility |
Прокручивает связанное представление (при необходимости), чтобы сделать курсор видимым. |
protected void |
damage |
Повреждает область вокруг курсора, чтобы перерисовать его в новом месте. |
void |
deinstall |
Вызывается при удалении пользовательского интерфейса из интерфейса JTextComponent. |
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
protected void |
fireStateChanged() |
Уведомляет всех слушателей, которые зарегистрировали интерес к уведомлениям об этом типе события. |
void |
focusGained |
Вызывается, когда компонент, содержащий курсор, получает фокус. |
void |
focusLost |
Вызывается, когда компонент, содержащий курсор, теряет фокус. |
int |
getBlinkRate() |
Получает скорость мигания курсора. |
ChangeListener[] |
getChangeListeners() |
Возвращает массив всех слушателей изменений, зарегистрированных на этом курсоре. |
protected final JTextComponent |
getComponent() |
Получает компонент текстового редактора, к которому привязан этот курсор. |
int |
getDot() |
Получает текущую позицию курсора. |
Position.Bias |
getDotBias() |
Возвращает смещение позиции курсора. |
<T extends EventListener> |
getListeners |
Возвращает массив всех объектов, в настоящее время зарегистрированных как FooListener для этого курсора. |
Point |
getMagicCaretPosition() |
Получает сохраненную позицию курсора. |
int |
getMark() |
Получает текущую позицию метки. |
Position.Bias |
getMarkBias() |
Возвращает смещение метки. |
protected Highlighter.HighlightPainter |
getSelectionPainter() |
Получает рисовальщик для выделения. |
int |
getUpdatePolicy() |
Получает политику перемещения курсора при обновлениях документа. |
void |
install |
Вызывается при установке пользовательского интерфейса в интерфейс JTextComponent. |
boolean |
isActive() |
Определяет, активен ли в данный момент курсор. |
boolean |
isSelectionVisible() |
Проверяет, виден ли текущий выделенный фрагмент. |
boolean |
isVisible() |
Указывает, виден ли в данный момент курсор. |
void |
mouseClicked |
Вызывается при щелчке мышью. |
void |
mouseDragged |
Перемещает позицию курсора в соответствии с текущим положением указателя мыши. |
void |
mouseEntered |
Вызывается при входе мыши в область. |
void |
mouseExited |
Вызывается при выходе мыши из области. |
void |
mouseMoved |
Вызывается при перемещении мыши. |
void |
mousePressed |
Если нажата кнопка 1, это выполняется для запроса фокуса на связанном текстовом компоненте и для установки позиции курсора. |
void |
mouseReleased |
Вызывается при отпускании кнопки мыши. |
protected void |
moveCaret |
Пытается переместить позицию курсора из координат события мыши, используя viewToModel(). |
void |
moveDot |
Перемещает позицию курсора в указанную позицию со смещением вперёд. |
void |
moveDot |
Перемещает позицию курсора в указанную позицию со заданным смещением. |
void |
paint |
Отображает курсор в виде вертикальной линии. |
protected void |
positionCaret |
Пытается установить позицию курсора из координат события мыши, используя viewToModel(). |
void |
removeChangeListener |
Удаляет обработчик, который отслеживал изменения позиции курсора. |
protected final void |
repaint() |
Перерисовывает курсор. |
void |
setBlinkRate |
Устанавливает скорость мигания курсора. |
void |
setDot |
Устанавливает позицию курсора и метки в указанную позицию со смещением вперёд. |
void |
setDot |
Устанавливает позицию курсора и метки в указанную позицию со заданным смещением. |
void |
setMagicCaretPosition |
Сохраняет текущую позицию курсора. |
void |
setSelectionVisible |
Изменяет видимость выделения. |
void |
setUpdatePolicy |
Устанавливает политику перемещения курсора при обновлениях документа. |
void |
setVisible |
Устанавливает видимость курсора и перерисовывает его. |
Методы, объявленные в классе java.awt.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
Методы, объявленные в классе java.awt.geom.Rectangle2D
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
Методы, объявленные в классе java.awt.geom.RectangularShape
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.awt.Shape
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects
Подробное описание полей
UPDATE_WHEN_ON_EDT
public static final int UPDATE_WHEN_ON_EDT
- С момента:
- 1.5
- См. также:
NEVER_UPDATE
public static final int NEVER_UPDATE
- С момента:
- 1.5
- См. также:
ALWAYS_UPDATE
public static final int ALWAYS_UPDATE
- С момента:
- 1.5
- См. также:
listenerList
protected EventListenerList listenerList
changeEvent
protected transient ChangeEvent changeEvent
Подробное описание конструкторов
DefaultCaret
public DefaultCaret()
Подробное описание методов
setUpdatePolicy
public void setUpdatePolicy(int policy)
BACKSPACE набрано, курсор уменьшает своё абсолютное положение из-за удаления символа перед ним. Иногда может быть полезно отключить обновления позиции курсора, чтобы курсор оставался в той же абсолютной позиции в документе независимо от обновлений.
Разрешены следующие политики обновления:
-
NEVER_UPDATE: курсор остаётся в той же абсолютной позиции в документе независимо от обновлений документа, за исключением случаев, когда длина документа становится меньше текущей позиции курсора из-за удаления. В этом случае позиция курсора устанавливается в конец документа. Курсор не пытается сохранить видимость, прокручивая связанный вид при использовании этой политики. -
ALWAYS_UPDATE: курсор всегда отслеживает изменения документа. При обычных изменениях он увеличивает своё положение, если вставка происходит перед или в его текущей позиции, и уменьшает положение, если удаление происходит перед его текущей позицией. При обновлениях отмены/повтор курсор всегда перемещается в позицию, где произошло обновление. Курсор также пытается сохранить свою видимость, вызывая методadjustVisibility. -
UPDATE_WHEN_ON_EDT: действует какALWAYS_UPDATE, если обновления документа выполняются на потоке обработки событий, и какNEVER_UPDATE, если обновления выполняются на другом потоке.
Значение по умолчанию — UPDATE_WHEN_ON_EDT.
- Параметры:
-
policy- одно из следующих значений:UPDATE_WHEN_ON_EDT,NEVER_UPDATE,ALWAYS_UPDATE - Исключения:
-
IllegalArgumentException- если передано недопустимое значение - С момента:
- 1.5
- См. также:
getUpdatePolicy
public int getUpdatePolicy()
- Возвращает:
- одно из следующих значений:
UPDATE_WHEN_ON_EDT,NEVER_UPDATE,ALWAYS_UPDATE - С момента:
- 1.5
- См. также:
getComponent
protected final JTextComponent getComponent()
- Возвращает:
- компонент
repaint
protected final void repaint()
Этот метод потокобезопасен, хотя большинство методов Swing не являются таковыми. Дополнительную информацию см. в Concurrency in Swing.
damage
protected void damage(Rectangle r)
- Параметры:
-
r- текущее положение курсора - См. также:
adjustVisibility
protected void adjustVisibility(Rectangle nloc)
- Параметры:
-
nloc- новое положение для прокрутки
getSelectionPainter
protected Highlighter.HighlightPainter getSelectionPainter()
- Возвращает:
- рисовальщик
positionCaret
protected void positionCaret(MouseEvent e)
- Параметры:
-
e- событие мыши
moveCaret
protected void moveCaret(MouseEvent e)
- Параметры:
-
e- событие мыши
focusGained
public void focusGained(FocusEvent e)
- Определено в:
-
focusGainedв интерфейсеFocusListener - Параметры:
-
e- событие получения фокуса - См. также:
focusLost
public void focusLost(FocusEvent e)
- Определено в:
-
focusLostв интерфейсеFocusListener - Параметры:
-
e- событие потери фокуса - См. также:
mouseClicked
public void mouseClicked(MouseEvent e)
- Определено в:
-
mouseClickedв интерфейсеMouseListener - Параметры:
-
e- событие щелчка мышью - См. также:
mousePressed
public void mousePressed(MouseEvent e)
- Specified by:
-
mousePressedв интерфейсеMouseListener - Parameters:
-
e- событие нажатия мыши - See Also:
mouseReleased
public void mouseReleased(MouseEvent e)
- Specified by:
-
mouseReleasedв интерфейсеMouseListener - Parameters:
-
e- событие отпускания мыши - See Also:
mouseEntered
public void mouseEntered(MouseEvent e)
- Specified by:
-
mouseEnteredв интерфейсеMouseListener - Parameters:
-
e- событие входа мыши - See Also:
mouseExited
public void mouseExited(MouseEvent e)
- Specified by:
-
mouseExitedв интерфейсеMouseListener - Parameters:
-
e- событие выхода мыши - See Also:
mouseDragged
public void mouseDragged(MouseEvent e)
- Specified by:
-
mouseDraggedв интерфейсеMouseMotionListener - Parameters:
-
e- событие перетаскивания мыши - See Also:
mouseMoved
public void mouseMoved(MouseEvent e)
- Specified by:
-
mouseMovedв интерфейсеMouseMotionListener - Parameters:
-
e- событие перемещения мыши - See Also:
paint
public void paint(Graphics g)
Если в связанном документе присутствует несколько направлений текста, будет отображён флаг, указывающий смещение курсора. Это произойдёт только в том случае, если связанный документ является подклассом AbstractDocument и в структуре элемента bidi присутствует несколько уровней bidi (т.е. текст имеет несколько связанных с ним направлений).
- Specified by:
-
paintв интерфейсеCaret - Parameters:
-
g- контекст графики - See Also:
install
public void install(JTextComponent c)
- Specified by:
-
installв интерфейсеCaret - Parameters:
-
c- компонент - See Also:
deinstall
public void deinstall(JTextComponent c)
- Specified by:
-
deinstallв интерфейсеCaret - Parameters:
-
c- компонент - See Also:
addChangeListener
public void addChangeListener(ChangeListener l)
- Specified by:
-
addChangeListenerв интерфейсеCaret - Parameters:
-
l- слушатель - See Also:
removeChangeListener
public void removeChangeListener(ChangeListener l)
- Specified by:
-
removeChangeListenerв интерфейсеCaret - Parameters:
-
l- слушатель - See Also:
getChangeListeners
public ChangeListener[] getChangeListeners()
- Returns:
- все слушатели изменений этого курсора или пустой массив, если слушатели изменений не зарегистрированы
- Since:
- 1.4
- See Also:
fireStateChanged
protected void fireStateChanged()
- See Also:
getListeners
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
addFooListener. Вы можете указать аргумент listenerType с литералом класса, например FooListener.class. Например, вы можете запросить слушателей изменений у DefaultCaret c с помощью следующего кода:
ChangeListener[] cls = (ChangeListener[])(c.getListeners(ChangeListener.class));Если таких слушателей нет, этот метод возвращает пустой массив.
- Type Parameters:
-
T- тип слушателя - Parameters:
-
listenerType- тип запрашиваемых слушателей - Returns:
- массив всех объектов, зарегистрированных в качестве слушателей на этом компоненте, или пустой массив, если такие слушатели не были добавлены
- Throws:
-
ClassCastException- еслиlistenerTypeне указывает класс или интерфейс, реализующийjava.util.EventListener - Since:
- 1.3
- See Also:
setSelectionVisible
public void setSelectionVisible(boolean vis)
- Specified by:
-
setSelectionVisibleв интерфейсеCaret - Parameters:
-
vis- новая видимость
isSelectionVisible
public boolean isSelectionVisible()
- Specified by:
-
isSelectionVisibleв интерфейсеCaret - Returns:
- true, если выделение видимо
isActive
public boolean isActive()
Этот метод возвращает значение, указывающее, находится ли курсор в мигающем состоянии. Он не предоставляет информацию о том, мигает он сейчас или нет. Чтобы определить, окрашивается ли курсор в данный момент, используйте метод isVisible.
- Returns:
-
trueесли активен, иначеfalse - Since:
- 1.5
- See Also:
isVisible
public boolean isVisible()
isActive указывает, находится ли точка ввода в мигающем состоянии, так что она может быть видимой, а isVisible указывает, является ли точка ввода фактически видимой. Подклассы, которые хотят отображать мигающую точку ввода, должны переопределить метод paint и рисовать точку ввода только в том случае, если этот метод возвращает true.
- Определено в:
-
isVisibleв интерфейсеCaret - Возвращает:
- true, если видима, иначе false
- См. также:
setVisible
public void setVisible(boolean e)
isVisible и isActive. Вызов этого метода со значением true активирует мигание точки ввода. Установка значения в false полностью отключает её. Чтобы определить, активен ли мигающий режим, необходимо вызвать isActive. Фактически, isActive является соответствующим методом-«геттером» для этого метода. isVisible может использоваться для получения текущего состояния видимости точки ввода, то есть отображается ли она в данный момент. Это состояние будет меняться по мере мигания точки ввода. Вот список возможных возвращаемых значений как isActive, так и isVisible после вызова этого метода:
setVisible(true):
- isActive(): true
- isVisible(): true или false в зависимости от того, включён или выключен мигающий режим точки ввода
setVisible(false):
- isActive(): false
- isVisible(): false
- Определено в:
-
setVisibleв интерфейсеCaret - Параметры:
-
e- спецификатор видимости - См. также:
setBlinkRate
public void setBlinkRate(int rate)
- Определено в:
-
setBlinkRateв интерфейсеCaret - Параметры:
-
rate- скорость в миллисекундах, 0 для остановки мигания - См. также:
getBlinkRate
public int getBlinkRate()
- Определено в:
-
getBlinkRateв интерфейсеCaret - Возвращает:
- задержка в миллисекундах. Если это ноль, точка ввода не будет мигать.
- См. также:
getDot
public int getDot()
- Определено в:
-
getDotв интерфейсеCaret - Возвращает:
- положение >= 0
- См. также:
getMark
public int getMark()
- Определено в:
-
getMarkв интерфейсеCaret - Возвращает:
- положение >= 0
- См. также:
setDot
public void setDot(int dot)
- Определено в:
-
setDotв интерфейсеCaret - Параметры:
-
dot- положение >= 0 - См. также:
moveDot
public void moveDot(int dot)
- Определено в:
-
moveDotв интерфейсеCaret - Параметры:
-
dot- положение >= 0 - См. также:
moveDot
public void moveDot(int dot, Position.Bias dotBias)
- Параметры:
-
dot- положение >= 0 -
dotBias- смещение для этого положения, неnull - Исключения:
-
IllegalArgumentException- если смещениеnull - См. также:
setDot
public void setDot(int dot, Position.Bias dotBias)
- Параметры:
-
dot- положение >= 0 -
dotBias- смещение для этого положения, неnull - Исключения:
-
IllegalArgumentException- если смещениеnull - См. также:
getDotBias
public Position.Bias getDotBias()
- Возвращает:
- смещение положения точки ввода
getMarkBias
public Position.Bias getMarkBias()
- Возвращает:
- смещение метки
setMagicCaretPosition
public void setMagicCaretPosition(Point p)
- Определено в:
-
setMagicCaretPositionв интерфейсеCaret - Параметры:
-
p- положение - См. также:
getMagicCaretPosition
public Point getMagicCaretPosition()
- Определено в:
-
getMagicCaretPositionв интерфейсеCaret - Возвращает:
- положение, см. #setMagicCaretPosition
- См. также:
equals
public boolean equals(Object obj)
- Переопределяет:
-
equalsв классеRectangle - Параметры:
-
obj- объект для сравнения с этим шрифтом - Возвращает:
-
trueесли объекты равны;falseв противном случае - См. также:
© 1993, 2021, 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.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/text/DefaultCaret.html