TextHitInfo 클래스

TextHitInfo 클래스

TextHitInfo 클래스는 텍스트 모델의 문자 위치와 그 문자의 bias("측면")를 나타내요. bias는 leading(왼쪽에서 오른쪽 문자 기준 왼쪽 가장자리) 또는 trailing(오른쪽 가장자리) 중 하나예요. TextHitInfo 인스턴스는 텍스트 안에서 캐럿·삽입 위치를 지정하는 데 사용돼요.

출처: Java API Reference

본문

예를 들어 텍스트 "abc"를 생각해 보죠. TextHitInfo.trailing(1)은 텍스트에서 'b'의 오른쪽에 해당해요.

public final class TextHitInfo
extends Object

TextHitInfo는 주로 TextLayoutTextLayout의 클라이언트가 사용해요. TextLayout 클라이언트는 새 텍스트가 텍스트 모델에 삽입될 삽입 오프셋을 TextHitInfo 인스턴스로 조회해요. 삽입 오프셋은 bias가 leading이면 TextHitInfo의 문자 위치와 같고, trailing이면 그보다 한 문자 뒤예요. TextHitInfo.trailing(1)의 삽입 오프셋은 2예요.

getOtherHit

때로는 기존 TextHitInfo와 같은 삽입 오프셋을 갖되 반대쪽 문자의 히트로 TextHitInfo를 구성하는 게 편리해요. getOtherHit 메서드는 기존 인스턴스와 같은 삽입 오프셋을 갖고, 삽입 오프셋의 반대쪽 문자에 히트한 새 TextHitInfo를 만들어요. trailing(1)getOtherHit을 호출하면 leading(2)를 반환해요. 일반적으로 trailing(n)getOtherHitleading(n+1)을, leading(n)getOtherHittrailing(n-1)을 반환해요.

사용 예제 (그래픽 점을 삽입 위치로 변환)

TextLayout layout = ...;
Point2D.Float hitPoint = ...;
TextHitInfo hitInfo = layout.hitTestChar(hitPoint.x, hitPoint.y);
int insPoint = hitInfo.getInsertionIndex();
// insPoint는 layout에 상대적이므로, 텍스트 모델에서 쓰려면 보정 필요

주요 메서드

  • leading(int charIndex) — 지정한 문자의 leading 쪽 히트를 만들어요.
  • trailing(int charIndex) — 지정한 문자의 trailing 쪽 히트를 만들어요.
  • getCharIndex() — 히트의 문자 위치를 반환해요.
  • getInsertionIndex() — 삽입 오프셋을 반환해요.
  • isLeadingEdge() — leading 쪽인지 확인해요.
  • getOtherHit() — 삽입 오프셋이 같은 반대쪽 히트를 만들어요.

더 알아보기