3

Elementの目的と、それがJEditorPane または JTextPane に表示されるStyledDocumentの操作にどのように役立つかを理解しようとしています。また、それが「段落」の概念とどのように関係しているかを把握しようとしています。

javax.swing.text.Element の javadoc はほとんど何もありません。

public interface Element

ドキュメントの構造部分を記述するためのインターフェイス。これは、SGML 要素の精神を捉えることを目的としています。

私は HTML と XML の要素の概念に非常に精通しており、これは似ているようですが、StyledDocument に関連しているため、その目的がわかりません。最初は、さまざまなスタイルの停止点と開始点を管理するために StyledDocument が内部的に使用するものだと思っていましたが、Web で Element のインスタンスを使用しているコード例を見ました。

さまざまなフォントと色で表示する必要があるデータの独自のツリー構造が既にあり、それをトラバースすると、必要に応じてフォントや色を変更する場所がわかります。Element に直接触れることなく、StyledDocument.setCharacterAttributessetParagraphAttributesを一連の呼び出しで差し迫ったニーズを満たすことができるようです。

しかし、Element を使用すると、より効率的またはクリーンになるという印象を受けます。Element と、それが StyledDocument とパラグラフの概念にどのように役立つかを正しく理解するのを手伝ってください。今は Element を使用していなくても、少なくとも欠けているものに感謝し、必要かどうかを知ることができます。次の同様の状況での使用方法。

4

1 に答える 1

6

実際、DefaultStyledDocument は Elements のツリーです。BranchElements と LeafElements があります。葉は、フォント サイズ/スタイル、フォントの色属性 (太字、斜体、下線など) などのテキスト属性を持つテキストを表します。BrachElement には、葉または別の分岐要素が含まれます。最も単純なケースでは、分岐は段落です。しかし、ルート Element は BranchElement のインスタンスでもあります。すべての要素は、独自の AttributeSet を持つことができます。たとえば、テキストの色を見つけるには、LeafElement のセットが要求されます。色が定義されていない場合は、葉の親要素が尋ねられます。

これを使用して、ドキュメントがどのように表現されているか (モデル)、およびモデルがビューでどのように表現されているかを確認できます。 http://java-sl.com/JEditorPaneStructureTool.html

この例は HTMLDocument の構造を示していますが、同じコードを使用して StyledEditorKit の構造も確認できます。

于 2011-01-24T13:42:03.237 に答える