2010-03-11 3 views
0

글꼴 렌더링이 발생하는 JDK 소스의 위치는 어디입니까? TextArea, JTextArea, TextComponent, JTextComponent, Font ... 페인트 (그래픽 g)에서 페인트 (그래픽 g)를 찾지 않으려 고 시도했습니다. 글꼴 정보가 GlyphVectors로 변형되어 Shapes가 그려지는 것은 ...으로 그려져 있습니까? 글꼴 정보는 어디서 어떻게 화면에 그려 지나요?JDK에서 글꼴을 렌더링하는 소스는 어디에 있습니까?

답변

1

출처는 sun.font. *, sun.awt.font. * 및 javax.swing.text. *입니다.

첫 번째로 JTextArea, JTextComponent 등은 자체적으로 그려지지 않으며 UI 위임자를 사용합니다. BasicTextUIBasicLabelUI을보십시오.

UI 클래스는 GlyphView인데, 이는 "텍스트 스타일 덩어리"입니다. TextLine은 한 수준의 텍스트를 그리기 위해 몇 가지 수준의 위임을 통해 사용됩니다. TextLine은 TextLineComponents의 배열을 보유하고 있으며, 각 TextLineComponents는 문자를 나타냅니다.

해당 TextLineComponents는 ShapeGraphicAttribute (모양의 컨테이너) 또는 ImageGraphicAttribute (이미지의 컨테이너) 중 하나가됩니다. 둘 다 표준 그래픽 그리기 메소드로 스스로를 그립니다.

대부분의 클래스에는 JDK에 소스가 포함되어 있습니다.

이것은 총체적으로 단순화 된 것이며 계층 구조의 코드와 클래스를 통해 다른 경로가 있습니다. 나는 그것을 잘 이해한다고 주장하지 않습니다.

+0

감사합니다. 이클립스에서 JDK 소스를 첨부하고 BasicTextUI.paint()에 중단 점을 넣은 다음 예제를 여기에서 실행하여 [1] 어떻게 작동하는지 계산합니다. [1] http://java.sun.com/docs/books/tutorial/uiswing/examples/components/TextAreaDemoProject/src/components/TextAreaDemo.java –

+0

이 문제를 조사 할 흥미로운 자료는 WrappedPlainView [1]입니다. 기본 텍스트 둘러싸 기 그림을 구현합니다. [1] http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/WrappedPlainView.html –

+0

이 문제에 대한 훌륭한 자료는 [1] 스윙 텍스트 패키지 기사입니다 Swing의 텍스트 패키지를 쓴 Tim Prinzing의 말이다. [1] http://java.sun.com/products/jfc/tsc/articles/text/overview/ –

관련 문제