2011-01-24 3 views
3

나는 요소의 목적을 이해하려고 노력하고있어 어떻게 JEditorPane로 또는 JTextPane가에 표시하는 것입니다 인 StyledDocument를 조작 도움이 될 수 있습니다. 나는 또한 그것이 "단락"의 개념과 어떻게 관련되어 있는지 파악하려고 노력하고있다.자바 스윙에서 요소의 목적과 인 StyledDocument의 관계 및 단락

공중 인터페이스 요소

인터페이스 문서의 구조를 설명하는 부분 :

javax.swing.text.Element위한 Javadoc 거의 아무것도. SGML 요소의 정신을 포착하기위한 것입니다.

HTML과 XML의 요소에 대해 매우 잘 알고 있습니다. 외관상으로는 비슷하지만 StyledDocument와 관련하여 그 용도를 알 수 없습니다. 처음에는 StyledDocument가 내부적으로 다양한 스타일의 시작점과 시작점을 관리하는 데 사용 된 것으로 생각했지만 요소 예제를 사용하는 웹에서 코드 예제를 보았습니다.

다른 글꼴 및 색상으로 표시해야하는 데이터의 트리 구조가 이미 있으며, 필요에 따라 글꼴 또는 색을 변경해야하는 위치를 알려주는 역할을합니다. 요소를 직접 건드리지 않고도 StyledDocument.setCharacterAttributessetParagraphAttributes에 대한 일련의 호출로 즉각적인 필요를 충족시킬 수있을 것 같습니다.

하지만 Element를 사용하는 것이 더 효율적이거나 깨끗해진다는 인상을받습니다. 요소에 대한 올바른 이해를 돕고, StyledDocument와 paragrah 개념에 도움이되는 방법을 알려주세요. 그렇기 때문에 요소를 사용하지 않아도, 필자는 필자가 누락 된 부분에 대해 높이 평가하고, 다음에 비슷한 상황에서 사용하는 방법.

답변

6

사실 DefaultStyledDocument는 Elements 트리입니다. BranchElements와 LeafElements가 있습니다. 리프는 글꼴 크기/스타일, 글꼴 색상 속성 (굵게, 기울임 꼴, 밑줄 등)과 같은 텍스트 속성을 가진 텍스트를 나타냅니다. BrachElement에는 Leaves 나 다른 분기 요소가 포함됩니다. 가장 단순한 경우 분기는 단락입니다. 그러나 루트 요소는 BranchElement의 인스턴스이기도합니다. 모든 요소는 자신의 AttributeSet을 가질 수 있습니다. 예 : 텍스트의 색 LeafElement의 세트가 묻습니다. 색상이 정의되어 있지 않으면 리프의 부모 요소가 요청됩니다.

문서가 어떻게 표시되는지 (모델) 및 모델이 뷰에서 표시되는 방법을 보려면이 옵션을 사용할 수 있습니다. http://java-sl.com/JEditorPaneStructureTool.html

예는 HTMLDocument의의 구조를 보여줍니다하지만 당신은 시작과의 엔드 포인트를 표시하기 위해 내가 setParagraphAttributes를 호출하는 경우, 즉 인 StyledDocument 내부에 요소를 만들 않습니다 된 StyledEditorKit의 구조뿐만 아니라 그래서

+1

를 확인하기 위해 같은 코드를 사용할 수 있습니다 절? – Gigatron

+1

아니요, 단락 요소가 이미 있습니다. 삽입 된 텍스트에 대해 만들어집니다. 실제로 각 텍스트 조각이 "\ n"으로 끝나면 단락 요소가 만들어집니다. setParagraphAttributes()를 호출하면 영향을받는 모든 단락 요소의 속성이 메소드의 매개 변수에 따라 변경됩니다. 마지막 매개 변수가 true이면 모든 이전 attrs가 새 매개 변수로 바뀝니다. 반대의 경우 지정된 속성 만 대체됩니다. – StanislavL

+0

감사합니다. 당신의 링크에서 예제를 연구하고 Sun의 Document 관련 클래스에서 소스 코드를 연구하는 데 더 많은 시간을 할애해야합니다. – Gigatron