JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.text.html
クラス HTMLDocument

java.lang.Object
  |
  +--javax.swing.text.AbstractDocument
        |
        +--javax.swing.text.DefaultStyledDocument
              |
              +--javax.swing.text.html.HTMLDocument
すべての実装インタフェース:
Document, Serializable, StyledDocument

public class HTMLDocument
extends DefaultStyledDocument

HTML をモデル化するドキュメントです。このモデルの目的は、ドキュメントのブラウズと編集の両方をサポートすることです。このため、HTML ドキュメントによって記述された構造は、デフォルトでは正確に複製されません。デフォルトでモデル化される要素構造は、HTMLDocument.HTMLReader クラスによって構築されます。このクラスは、パーサに必要な HTMLEditorKit.ParserCallback プロトコルを実装しています。構造を変更するには、HTMLReader クラスをサブクラス化し、getReader メソッドを実装し直して新しいリーダの実装を返すようにします。生成されるデフォルトの構造については、HTMLReader のマニュアルを参照してください。デフォルトの構造は、ドキュメントの内容が損なわれないことを意図して実装されていますが、HTML 形式を生成し直すときに異なった形式になることもあります。

このドキュメントは、HTML だけをモデル化しており、ビューの属性はドキュメント内に格納されません。要素は、StyleContext.NameAttribute 属性によって識別されます。この属性は必ず、要素の種類を識別する HTML.Tag 型の値を持っています。コメントのように、合成される要素もあります。HTMLFactory はこの属性を使って構築するビューの種類を決定します。

このドキュメントは、追加読み込みをサポートしています。TokenThreshold プロパティにより、どれくらいの量の解析がバッファに格納されるとドキュメントの要素構造の更新を行うかを制御します。このプロパティは、EditorKit で設定されるため、サブクラスから無効にすることができます。

Base プロパティは、相対 URL をどの URL に解決するかを決定します。プロパティの値が URL の場合、デフォルトでは、Base プロパティは、Document.StreamDescriptionProperty になります。<BASE> タグが検出された場合、ベースは、そのタグで指定された URL になります。ベース URL はプロパティなので、直接設定できます。

このドキュメントで使用するデフォルトのコンテンツ記憶機構は、ギャップバッファ (GapContent) です。別の機構を指定するには、Content の実装を引数に取るコンストラクタを使います。

関連項目:
直列化された形式

内部クラスの概要
 class HTMLDocument.BlockElement
          HTML の構造 block を表す要素です。
 class HTMLDocument.HTMLReader
          HTML ドキュメントを HTML 要素構造とともにロードするための HTML リーダです。
static class HTMLDocument.Iterator
          特定のタイプのタグに対して繰り返し処理を実行する反復子です。
 class HTMLDocument.RunElement
          HTML 文字レベル属性のセットが割り当てられているテキストのチャンクを表す要素です。
 
クラス javax.swing.text.DefaultStyledDocument から継承した内部クラス
DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement
 
クラス javax.swing.text.AbstractDocument から継承した内部クラス
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
 
フィールドの概要
static String AdditionalComments
          ドキュメントプロパティのキーの値です。
 
クラス javax.swing.text.DefaultStyledDocument から継承したフィールド
buffer, BUFFER_SIZE_DEFAULT
 
クラス javax.swing.text.AbstractDocument から継承したフィールド
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
 
インタフェース javax.swing.text.Document から継承したフィールド
StreamDescriptionProperty, TitleProperty
 
コンストラクタの概要
HTMLDocument()
          HTML ドキュメントを構築します。
HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
          指定されたコンテンツ記憶域の実装と、指定されたスタイル/属性記憶機構とを使って HTML ドキュメントを作成します。
HTMLDocument(StyleSheet styles)
          デフォルトのコンテンツ記憶域の実装と、指定されたスタイル/属性記憶機構とを使って HTML ドキュメントを構築します。
 
メソッドの概要
protected  void create(DefaultStyledDocument.ElementSpec[] data)
          ドキュメントのコンテンツを、指定された要素仕様に置換します。
protected  Element createBranchElement(Element parent, AttributeSet a)
          他の要素を格納できるドキュメントの枝の要素を作成します。
protected  AbstractDocument.AbstractElement createDefaultRoot()
          デフォルトのドキュメント構造を表すために使うルート要素を作成します。
protected  Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
          テキストを直接表す (子を持たない) ドキュメントの葉の要素を作成します。
protected  void fireChangedUpdate(DocumentEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
protected  void fireUndoableEditUpdate(UndoableEditEvent e)
          このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。
 URL getBase()
          相対 URL を解決処理する位置を設定します。
 Element getElement(Element e, Object attribute, Object value)
          属性を持った e の子要素である value 値を含む attribute を返します。
 Element getElement(String id)
          指定された id 属性を含んだ要素を取り出します。
 HTMLDocument.Iterator getIterator(HTML.Tag t)
          後続する HTML タグの種類の反復子を取得します。
 HTMLEditorKit.Parser getParser()
          既存のドキュメントに html を挿入するときに使用するパーサを返します。
 boolean getPreservesUnknownTags()
           
 HTMLEditorKit.ParserCallback getReader(int pos)
          パーサが HTML ドキュメントをロードするために使うリーダを取り出します。
 HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
          パーサが HTML ドキュメントをロードするために使うリーダを取り出します。
 StyleSheet getStyleSheet()
          HTML ドキュメント自体が指定するドキュメント固有の表示規則 (CSS) を持つ、StyleSheet を取得します。
 int getTokenThreshold()
          ドキュメントの要素構造の更新前に、バッファに格納されるトークンの数を取得します。
protected  void insert(int offset, DefaultStyledDocument.ElementSpec[] data)
          新しい要素を一括して挿入します。
 void insertAfterEnd(Element elem, String htmlText)
          指定要素が終了後に文字列として指定された HTML を挿入します。
 void insertAfterStart(Element elem, String htmlText)
          要素の開始位置に文字列として指定された HTML を挿入します。
 void insertBeforeEnd(Element elem, String htmlText)
          要素の終了位置に文字列として指定された HTML を挿入します。
 void insertBeforeStart(Element elem, String htmlText)
          指定された要素が開始される前に文字列として指定された HTML を挿入します。
protected  void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
          テキストの挿入に応じてドキュメントを更新します。
 void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
          HTML フレーム内でドキュメントによって生成された HyperlinkEvent の処理をします。
 void setBase(URL u)
          相対 URL を解決処理する位置を設定します。
 void setInnerHTML(Element elem, String htmlText)
          指定された要素の子を HTML 文字列として指定されたコンテンツと置き換えます。
 void setOuterHTML(Element elem, String htmlText)
          指定された親の要素を HTML 文字列として指定されたコンテンツと置き換えます。
 void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
          段落に属性を設定します。
 void setParser(HTMLEditorKit.Parser parser)
          既存のドキュメントに setInnerHTMLsetOuterHTML などの html を挿入するときにメソッドが使用するパーサを設定します。
 void setPreservesUnknownTags(boolean preservesTags)
          未知のタグを処理する方法を設定します。
 void setTokenThreshold(int n)
          ドキュメントの要素構造の更新前に、バッファに格納されるトークンの数を設定します。
 
クラス javax.swing.text.DefaultStyledDocument から継承したメソッド
addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, styleChanged
 
クラス javax.swing.text.AbstractDocument から継承したメソッド
addUndoableEditListener, createPosition, dump, fireInsertUpdate, fireRemoveUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, insertString, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeUndoableEditListener, render, setAsynchronousLoadPriority, setDocumentProperties, writeLock, writeUnlock
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース javax.swing.text.Document から継承したメソッド
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render
 

フィールドの詳細

AdditionalComments

public static final String AdditionalComments
ドキュメントプロパティのキーの値です。キーに対応する値は、String の Vector になります。この文字列は、本文はないコメントです。
コンストラクタの詳細

HTMLDocument

public HTMLDocument()
HTML ドキュメントを構築します。

HTMLDocument

public HTMLDocument(StyleSheet styles)
デフォルトのコンテンツ記憶域の実装と、指定されたスタイル/属性記憶機構とを使って HTML ドキュメントを構築します。
パラメータ:
styles - スタイル

HTMLDocument

public HTMLDocument(AbstractDocument.Content c,
                    StyleSheet styles)
指定されたコンテンツ記憶域の実装と、指定されたスタイル/属性記憶機構とを使って HTML ドキュメントを作成します。
パラメータ:
c - コンテンツのコンテナ
styles - スタイル
メソッドの詳細

getReader

public HTMLEditorKit.ParserCallback getReader(int pos)
パーサが HTML ドキュメントをロードするために使うリーダを取り出します。このメソッドは HTMLDocument.HTMLReader のインスタンスを返すために実装されます。サブクラスは、必要であれば、カスタムタグや文字スタイル要素の構造的表現の処理などのために、このメソッドを再実装してドキュメントの構造化手段を変更できます。

getReader

public HTMLEditorKit.ParserCallback getReader(int pos,
                                              int popDepth,
                                              int pushDepth,
                                              HTML.Tag insertTag)
パーサが HTML ドキュメントをロードするために使うリーダを取り出します。このメソッドは HTMLDocument.HTMLReader のインスタンスを返すために実装されます。サブクラスは、必要であれば、カスタムタグや文字スタイル要素の構造的表現の処理などのために、このメソッドを再実装してドキュメントの構造化手段を変更できます。
パラメータ:
popDepth - 挿入の前に生成される ElementSpec.EndTagType タグの数
pushDepth - 終了タグの生成後、挿入前に生成される ElementSpec.JoinNextDirection の方向を持つ ElementSpec.StartTagType のタグの数
insertTag - ドキュメントへの挿入を開始する最初のタグ

getBase

public URL getBase()
相対 URL を解決処理する位置を設定します。デフォルトではこの位置は、ドキュメントが URL からロードされた場合にはドキュメントの URL になります。ベースタグが見つかり、構文解析できる場合には、それをベース位置として使用します。

setBase

public void setBase(URL u)
相対 URL を解決処理する位置を設定します。デフォルトではこの位置は、ドキュメントが URL からロードされた場合にはドキュメントの URL になります。ベースタグが見つかり、構文解析できる場合には、それをベース位置として使用します。

StyleSheet のベースを u とレシーバに設定します。


insert

protected void insert(int offset,
                      DefaultStyledDocument.ElementSpec[] data)
               throws BadLocationException
新しい要素を一括して挿入します。要素はこのようにしてドキュメント内に作成されます。構文解析によりどのような構造が必要であるかを決め、ドキュメントに書き込みロックがかかっていない間に、編集を記述するトークンのセットとして仕様を作成します。このメソッドは、リーダによってまとめて呼び出されて、短時間の間書き込みロックを得ます。ドキュメントへの実際の書き込みは、この時間に行われます。
オーバーライド:
クラス DefaultStyledDocument 内の insert
パラメータ:
offset - 開始オフセット
data - 要素データ
例外:
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
                            AttributeSet attr)
テキストの挿入に応じてドキュメントを更新します。このアクションは書き込みロックの中で発生します。この実装は、挿入されたコンテンツを単に改行ごとに解析し、要素バッファに対する一連の指示を構築します。
オーバーライド:
クラス DefaultStyledDocument 内の insertUpdate
パラメータ:
chng - ドキュメント変更の説明
attr - 属性

create

protected void create(DefaultStyledDocument.ElementSpec[] data)
ドキュメントのコンテンツを、指定された要素仕様に置換します。このメソッドは、ロードがまとめて完了した場合、挿入の前に呼び出されます。ドキュメント全体を一度にまとめてロードする場合に呼び出される、唯一のメソッドです。
オーバーライド:
クラス DefaultStyledDocument 内の create

setParagraphAttributes

public void setParagraphAttributes(int offset,
                                   int length,
                                   AttributeSet s,
                                   boolean replace)
段落に属性を設定します。

このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。

オーバーライド:
クラス DefaultStyledDocument 内の setParagraphAttributes
パラメータ:
offset - 段落に対するオフセット (最小でも 0 でなければならない)
length - 影響を受ける文字数 (最小でも 0 でなければならない)
s - 属性
replace - 既存の属性を置換するか、マージするか

getStyleSheet

public StyleSheet getStyleSheet()
HTML ドキュメント自体が指定するドキュメント固有の表示規則 (CSS) を持つ、StyleSheet を取得します。

getIterator

public HTMLDocument.Iterator getIterator(HTML.Tag t)
後続する HTML タグの種類の反復子を取得します。包含されているアンカーのセットでの繰り返し処理や、入力要素での繰り返し処理などで使用されます。

createLeafElement

protected Element createLeafElement(Element parent,
                                    AttributeSet a,
                                    int p0,
                                    int p1)
テキストを直接表す (子を持たない) ドキュメントの葉の要素を作成します。HTMLDocument.RunElement 型の要素を返すために実装されます。
オーバーライド:
クラス AbstractDocument 内の createLeafElement
パラメータ:
parent - 親要素
a - 要素の属性
p0 - 範囲の始点 (最小でも 0 でなければならない)
p1 - 範囲の終点 (最小でも p0 でなければならない)
戻り値:
新規要素

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)
他の要素を格納できるドキュメントの枝の要素を作成します。HTMLDocument.BlockElement 型の要素を返すために実装されます。
オーバーライド:
クラス AbstractDocument 内の createBranchElement
パラメータ:
parent - 親要素
a - 属性
戻り値:
要素

createDefaultRoot

protected AbstractDocument.AbstractElement createDefaultRoot()
デフォルトのドキュメント構造を表すために使うルート要素を作成します。
オーバーライド:
クラス DefaultStyledDocument 内の createDefaultRoot
戻り値:
要素ベース

setTokenThreshold

public void setTokenThreshold(int n)
ドキュメントの要素構造の更新前に、バッファに格納されるトークンの数を設定します。

getTokenThreshold

public int getTokenThreshold()
ドキュメントの要素構造の更新前に、バッファに格納されるトークンの数を取得します。デフォルト値は、Integer.MAX_VALUE です。

setPreservesUnknownTags

public void setPreservesUnknownTags(boolean preservesTags)
未知のタグを処理する方法を設定します。true を設定すると未知のタグはモデルに入れられ、そうでない場合はモデルから外されます。

getPreservesUnknownTags

public boolean getPreservesUnknownTags()
戻り値:
解析時に未知のタグが残される場合は true

processHTMLFrameHyperlinkEvent

public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
HTML フレーム内でドキュメントによって生成された HyperlinkEvent の処理をします。HyperlinkEvent タイプは、パラメータが示す通り、HTMLFrameHyperlinkEvent です。HyperlinkEvent に含まれる通常の情報のほかに、このイベントはクリックが発生したフレーム (発生元の要素) に対応する要素、およびターゲット名を格納しています。ターゲット名は次に示す 4 種類の値のどれかです。 ターゲットが _self の場合、HTML.Attribute.SRC の値を変更するアクションが発生し、ChangedUpdate イベントをトリガーします。 ターゲットが _parent の場合、<FRAMESET> 要素である親要素を削除し、新しい <FRAME> 要素を挿入したあと、HTML.Attribute.SRC 属性が送信先の URL と等しい値を持つように設定して RemovedUpdate および InsertUpdate をトリガーします。 ターゲットが _top の場合、このメソッドは何も処理を行いません。_top は、フレーム用のビューの実装 (具体的には FrameView) で処理されます。_top はドキュメント全体の置き換えを意味するため、置換対象ドキュメントの外部で処理してください。 ターゲットがフレーム名の場合、ターゲットと同じ名前の要素を要素階層から探し、その要素の HTML.Attribute.SRC 属性を更新して ChangedUpdate イベントをトリガーします。
パラメータ:
e - イベント

setParser

public void setParser(HTMLEditorKit.Parser parser)
既存のドキュメントに setInnerHTMLsetOuterHTML などの html を挿入するときにメソッドが使用するパーサを設定します。

HTMLEditorKit.createDefaultDocument はパーサを設定します。手動で HTMLDocument ドキュメントを作成する場合は、それぞれに対応したパーサを設定するようにしてください。

導入されたバージョン:
1.3

getParser

public HTMLEditorKit.Parser getParser()
既存のドキュメントに html を挿入するときに使用するパーサを返します。
導入されたバージョン:
1.3

setInnerHTML

public void setInnerHTML(Element elem,
                         String htmlText)
                  throws BadLocationException,
                         IOException
指定された要素の子を HTML 文字列として指定されたコンテンツと置き換えます。

2 つ以上のイベントとして表示され、削除に続き n を挿入します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalArgumentException - elem は葉
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

setOuterHTML

public void setOuterHTML(Element elem,
                         String htmlText)
                  throws BadLocationException,
                         IOException
指定された親の要素を HTML 文字列として指定されたコンテンツと置き換えます。

2 つ以上のイベントとして表示され、削除に続き n を挿入します。

葉を置きかえるときには、改行が必要な場合に改行があるかどうかを確認してください。これで追加要素が挿入されます。<img> を持つ改行を含んだ文字要素を置き換えようとする場合は、一つはイメージ用、もう一つは改行用に 2 つの要素を生成することになります。

要素の長さを置き換えると、2 つの要素で終了します。つまり、setOuterHTML(getCharacterElement(getLength()), "blah") が最終的に 2 つの葉要素になります。一つは blah を表し、もう一つは末尾要素を表します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

insertAfterStart

public void insertAfterStart(Element elem,
                             String htmlText)
                      throws BadLocationException,
                             IOException
要素の開始位置に文字列として指定された HTML を挿入します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

insertBeforeEnd

public void insertBeforeEnd(Element elem,
                            String htmlText)
                     throws BadLocationException,
                            IOException
要素の終了位置に文字列として指定された HTML を挿入します。

elem の子が葉の場合、elem.getEndOffset() - 1 が改行である位置の文字に、改行後にテキストがないようにするために改行前に挿入します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

insertBeforeStart

public void insertBeforeStart(Element elem,
                              String htmlText)
                       throws BadLocationException,
                              IOException
指定された要素が開始される前に文字列として指定された HTML を挿入します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

insertAfterEnd

public void insertAfterEnd(Element elem,
                           String htmlText)
                    throws BadLocationException,
                           IOException
指定要素が終了後に文字列として指定された HTML を挿入します。

正しく機能させるために、レシーバは HTMLEditorKit.Parser を用意する必要があります。これは、レシーバが HTMLEditorKit から createDefaultDocument メソッドにより生成された場合です。

例外:
IllegalStateException - HTMLEditorKit.Parser がレシーバに設定されていない場合
導入されたバージョン:
1.3

getElement

public Element getElement(String id)
指定された id 属性を含んだ要素を取り出します。要素が見つからない場合は、null を返します。このメソッドはスレッドに対して安全ではありません。
導入されたバージョン:
1.3

getElement

public Element getElement(Element e,
                          Object attribute,
                          Object value)
属性を持った e の子要素である value 値を含む attribute を返します。見つからない場合は null。このメソッドはスレッドに対して安全ではありません。
導入されたバージョン:
1.3

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
オーバーライド:
クラス AbstractDocument 内の fireChangedUpdate
パラメータ:
e - イベント
関連項目:
EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)
このイベントタイプへの通知を配信対象に登録しているリスナーをすべて通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスはゆっくりと生成されます。
オーバーライド:
クラス AbstractDocument 内の fireUndoableEditUpdate
パラメータ:
e - イベント
関連項目:
EventListenerList

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.