DefaultCaret
DefaultCaret (캐럿 기본 구현)
Caret 인터페이스의 기본 구현입니다. 캐럿은 Rectangle 클래스를 확장하며, 이는 캐럿이 마지막으로 렌더링된 위치의 경계 상자를 보관하는 데 사용됩니다.
본문
이로써 캐럿이 움직일 때 modelToView를 호출하지 않고도 스레드 안전하게 리페인트할 수 있습니다. modelToView는 모델 갱신과 뷰 복구 사이에서 불안정하기 때문입니다.
magic 캐럿 위치는 캐럿 위치가 바뀔 때 null로 설정됩니다. 타이머가 (캐럿 변경 후) 새 위치를 결정합니다. 타이머가 발화할 때 magic 캐럿 위치가 여전히 null이면 현재 캐럿 위치로 재설정됩니다.
캐럿 위치를 바꾸면서 magic 캐럿 위치를 유지하고 싶은 동작(예: open/down)은 magic 캐럿 위치를 기억하고, 커서를 바꾼 뒤 다시 원래 값으로 설정해야 합니다.
주요 메서드·상세 (Methods & details)
주요 메서드로는 커서 위치를 얻거나 설정하는 getDot()/setDot(int)/moveDot(int), 선택 영역을 얻는 getMark(), 캐럿을 스레드 안전하게 리페인트하는 데 쓰이는 setMagicCaretPosition(Point), 시각 여부를 다루는 setVisible(boolean)/isVisible(), 텍스트 편집 동작과 연결되는 setSelectionVisible(boolean) 등이 있습니다.