logo
Хабибуллин

Курсор

Курсор описан интерфейсом Caret и реализован классом DefaultCaret как тонкая вертикальная черта, отмечающая позицию между символами. Текущая позиция называется точкой (dot). Для работы с выделенным текстом отмечается еще одна позиция — другой конец выделенного текста — называемая меткой (mark). Пока выделения нет, метка совпадает с точкой. При перемещении точки методом moveDot(int) метка остается на месте и создается выделенный участок текста. При установке точки методом setDot(int) метка переносится в точку и выделение отменяется.

Выделенный текст можно отметить на экране или никак не отмечать. Это регулируется методом setSelectionVisible(boolean), а отслеживается логическим методом

isSelectionVisible().

Отследить положение точки и метки можно методами getDot() и getMark(), возвращающими их линейную позицию в части Вид схемы MVC. Определить двумерную текущую позицию курсора можно методом

Point getMagicCaretPosition();

а установить — методом

void setMagicCaretPosition(Point);

Во время перемещения курсора эта позиция имеет значение null.

Визуализация курсора осуществляется методом paint(Graphics). Класс DefaultCaret расширяет класс Rectangle, определяя прямоугольник, внутри которого вычерчивается курсор.