JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.text.html
クラス HTMLEditorKit

java.lang.Object
  |
  +--javax.swing.text.EditorKit
        |
        +--javax.swing.text.DefaultEditorKit
              |
              +--javax.swing.text.StyledEditorKit
                    |
                    +--javax.swing.text.html.HTMLEditorKit
すべての実装インタフェース:
Cloneable, Serializable

public class HTMLEditorKit
extends StyledEditorKit

Swing の JEditorPane テキストコンポーネントは、EditorKit と呼ばれるプラグイン機構により、さまざまな種類のコンテンツをサポートしています。HTML は非常に一般的な形式なので、部分的なサポートをデフォルトで提供しています。このクラスが提供するデフォルトのサポートは、HTML 3.2 (一部の拡張を含む) をサポートしており、現在 4.0 のサポートに向けて移行中です。今のところ <applet> タグはサポートされていませんが、<object> タグの一部分はサポートされています。

HTML EditorKit はいくつかの目標を持って提供されており、これは HTML をモデル化する手法に反映されています。そうした目標が、クラスの設計に実質的な影響を与えています。

編集のサポート
JEditorPane のためのプラグインが、編集をサポートすべきということは明白ですが、編集をサポートするには設計上の考慮すべき問題がいくつかあります。HTML の規格に完全には準拠しない HTML ドキュメントがたくさん出回っているという事実があります。こうしたドキュメントを編集するには、なんらかの方法で正しい形式に正規化する必要があります。さらに、ユーザは多量の構造編集を好まないという事実があります。このため、HTML ドキュメントで定義されているとおりの HTML 構造ではなく、従来のテキスト編集の操作が好まれます。

HTML のモデル化は、HTMLDocument クラスで提供されています。HTML のモデル化については、HTMLDocument クラスの説明を参照してください。編集のサポートは、主に text パッケージで提供されます。

拡張可能/スケーラブル
このキットを無駄なく活用できるようにするために、キットを拡張可能にする努力が払われています。次にその内容の一部を示します。
  1. パーサは置き換え可能です。デフォルトのパーサは DTD に基づいた HotJava パーサです。別の DTD を使ったり、まったく別のパーサを使うこともできます。パーサを変更するには、getParser メソッドを実装し直してください。デフォルトのパーサは、最初の要求があったときに動的にロードされるため、別のパーサを使用する場合はロードされません。デフォルトのパーサは、このパッケージとは独立に、下位の parser パッケージにあります。
  2. パーサは、HTMLDocument によって提供される PaserCallback を作動させます。コールバックを変更するには、HTMLDocument をサブクラス化し、別のリーダを生成するドキュメントを返すように createDefaultDocument メソッドを実装し直してください。リーダは、ドキュメントがどのように構造化されるかを制御します。Document は、デフォルトでは HTML サポートを提供しますが、HTML 以外のタグによって別の要素構造をサポートすることも可能です。
  3. そのモデルのデフォルトのビューは、View 実装の階層として提供されますので、特定の要素の表示方法をカスタマイズしたり、新しい View の実装を提供することで、新しい種類の要素に対する機能を容易に追加できます。デフォルトのビューのセットは、HTMLFactory クラスによって提供されます。ビューのセットを変更するには、HTMLFactory をサブクラス化または置き換えた上で、getViewFactory メソッドを実装し直して別のファクトリを返すようにします。
  4. View の実装は、主に、ビュー内に保持されている CSS 属性を使用して機能します。これにより、実質的に異なって見える同じモデルに複数のビューをマッピングすることが可能になります。これは、出力の際に特に便利です。HTML 属性の多くに関しては、表示用に HTML 属性が CSS 属性に変換されます。これは、View の実装を汎用的にするのに役立ちます。

非同期ロード
大きなドキュメントでは、大量の解析が必要になりロードに多少時間がかかります。デフォルトではこのキットは、JEditorPane.setPage を使ってロードする場合に非同期でロードされるドキュメントを作成します。これは、ドキュメントのプロパティによって制御されます。createDefaultDocument メソッドをオーバーライドすれば、プロパティを変更できます。作業のバッチは、HTMLDocument.HTMLReader クラスが行い、実際の作業は text パッケージの DefaultStyledDocument および AbstractDocument クラスが行います。

現在の Look & Feel からのカスタマイズ
HTML は、よく知られた表示機能を提供しますが、その表示特性は正確には指定されていません。Swing は、Look & Feel の実装にテーマ機構を持っています。この Look & Feel が、HTML ビューに表示特性を与えるようになっていれば便利です。たとえば、視力の弱い人が、通常よりコントラストが強くサイズの大きいフォントを使えるようになります。

この機能は、StyleSheet クラスによって提供されます。HTML の表現は、EditorKit の StyleSheet プロパティの設定によって、自由に変えることができます。

データの損失なし
EditorKit はドキュメントを読み込んで保存する能力を持っています。一般にユーザにとっては、読み込みと保存の操作の間にデータの損失がないことが望まれます。HTMLEditorKit のポリシーは、認識できなかったものや表示されないものもあとで書き出すときのためにメモリに保存しておくことです。したがって、HTML ドキュメントのモデルでは、通常、ドキュメントの読み込み中に検出された情報はすべて格納されます。しかし、このポリシーは編集をサポートするためにある種の制約を受けます (不正確なドキュメントを正規化しなければならない場合など)。結局、ガイドラインとなる原則は、「情報は失われないように、しかし、より正確なモデルを作成するために、部分的な合成や並べ換えはありうる」ということになります。

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

内部クラスの概要
static class HTMLEditorKit.HTMLFactory
          HTML 用のビューを作成するファクトリです。
static class HTMLEditorKit.HTMLTextAction
          既存のドキュメントに HTML を挿入するために使用する各種の簡易メソッドを提供する、抽象 Action です。
static class HTMLEditorKit.InsertHTMLTextAction
          InsertHTMLTextAction は、既存の HTML ドキュメントに任意の HTML 文字列を挿入するために使用します。
static class HTMLEditorKit.LinkController
          関連するコンポーネントを監視し、必要に応じてハイパーリンクイベントを発生させるクラスです。
static class HTMLEditorKit.Parser
          パーサがサポートするインタフェースです。
static class HTMLEditorKit.ParserCallback
          構文解析の結果が、これらのコールバックメソッドを呼び出します。
 
クラス javax.swing.text.StyledEditorKit から継承した内部クラス
StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction
 
クラス javax.swing.text.DefaultEditorKit から継承した内部クラス
DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction
 
フィールドの概要
static String BOLD_ACTION
          ボールド処理識別子です。
static String COLOR_ACTION
          色選択処理識別子です。
static String DEFAULT_CSS
          タグ表示を設定するデフォルトの CSS (Cascading Style Sheet) ファイルです。
static String FONT_CHANGE_BIGGER
          次サイズへのフォント拡大識別子です。
static String FONT_CHANGE_SMALLER
          次サイズへのフォント縮小識別子です。
static String IMG_ALIGN_BOTTOM
          下端にイメージを整列させます。
static String IMG_ALIGN_MIDDLE
          中央にイメージを整列させます。
static String IMG_ALIGN_TOP
          上端にイメージを整列させます。
static String IMG_BORDER
          境界にイメージを整列させます。
static String ITALIC_ACTION
          イタリック処理識別子です。
static String LOGICAL_STYLE_ACTION
          論理スタイル選択処理識別子です。
static String PARA_INDENT_LEFT
          段落の左インデント処理識別子です。
static String PARA_INDENT_RIGHT
          段落の右インデント処理識別子です。
 
クラス javax.swing.text.DefaultEditorKit から継承したフィールド
backwardAction, beepAction, beginAction, beginLineAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deletePrevCharAction, downAction, endAction, endLineAction, EndOfLineStringProperty, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, selectLineAction, selectParagraphAction, selectWordAction, upAction, writableAction
 
コンストラクタの概要
HTMLEditorKit()
          HTMLEditorKit を構築し、StyleContext を作成して、スタイルシートをロードします。
 
メソッドの概要
 Object clone()
          エディタキットのコピーを作成します。
 Document createDefaultDocument()
          このタイプのエディタに適した初期化されないテキスト格納モデルを作成します。
protected  void createInputAttributes(Element element, MutableAttributeSet set)
          element の AttributeSet 内のキーと値のペアを set にコピーします。
 void deinstall(JEditorPane c)
          キットが JEditorPane から削除されているときに呼び出されます。
 Action[] getActions()
          エディタのコマンドリストを取り出します。
 String getContentType()
          このキットがサポートする MIME タイプのデータを返します。
 Cursor getDefaultCursor()
          デフォルトのカーソルを返します。
 MutableAttributeSet getInputAttributes()
          書式付き編集アクションに使用される入力属性を返します。
 Cursor getLinkCursor()
          ハイパーリンク上で使用するカーソルを設定します。
protected  HTMLEditorKit.Parser getParser()
          HTML ストリームの読み込みに使用するパーサを取り出します。
 StyleSheet getStyleSheet()
          HTML 要素の描画に使用されているスタイルセットを返します。
 ViewFactory getViewFactory()
          このキットで作成されるモデルのビューの生成に適したファクトリを取り出します。
 void insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag)
          既存のドキュメントに HTML を挿入します。
 void install(JEditorPane c)
          キットが JEditorPane にインストールされるときに呼び出されます。
 void read(Reader in, Document doc, int pos)
          指定されたストリームからコンテンツを挿入します。
 void setDefaultCursor(Cursor cursor)
          デフォルトのカーソルを設定します。
 void setLinkCursor(Cursor cursor)
          リンク上で使用するカーソルを設定します。
 void setStyleSheet(StyleSheet s)
          各種の HTML 要素の描画に使用されるスタイルセットを設定します。
 void write(Writer out, Document doc, int pos, int len)
          このタイプのコンテンツハンドラに適合した書式であることが期待されるストリームに、ドキュメントのコンテンツを適した形式でストリームに挿入します。
 
クラス javax.swing.text.StyledEditorKit から継承したメソッド
getCharacterAttributeRun
 
クラス javax.swing.text.DefaultEditorKit から継承したメソッド
createCaret, read, write
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

DEFAULT_CSS

public static final String DEFAULT_CSS
タグ表示を設定するデフォルトの CSS (Cascading Style Sheet) ファイルです。

BOLD_ACTION

public static final String BOLD_ACTION
ボールド処理識別子です。

ITALIC_ACTION

public static final String ITALIC_ACTION
イタリック処理識別子です。

PARA_INDENT_LEFT

public static final String PARA_INDENT_LEFT
段落の左インデント処理識別子です。

PARA_INDENT_RIGHT

public static final String PARA_INDENT_RIGHT
段落の右インデント処理識別子です。

FONT_CHANGE_BIGGER

public static final String FONT_CHANGE_BIGGER
次サイズへのフォント拡大識別子です。

FONT_CHANGE_SMALLER

public static final String FONT_CHANGE_SMALLER
次サイズへのフォント縮小識別子です。

COLOR_ACTION

public static final String COLOR_ACTION
色選択処理識別子です。色は引数で渡します。

LOGICAL_STYLE_ACTION

public static final String LOGICAL_STYLE_ACTION
論理スタイル選択処理識別子です。論理スタイルは引数で渡します。

IMG_ALIGN_TOP

public static final String IMG_ALIGN_TOP
上端にイメージを整列させます。

IMG_ALIGN_MIDDLE

public static final String IMG_ALIGN_MIDDLE
中央にイメージを整列させます。

IMG_ALIGN_BOTTOM

public static final String IMG_ALIGN_BOTTOM
下端にイメージを整列させます。

IMG_BORDER

public static final String IMG_BORDER
境界にイメージを整列させます。
コンストラクタの詳細

HTMLEditorKit

public HTMLEditorKit()
HTMLEditorKit を構築し、StyleContext を作成して、スタイルシートをロードします。
メソッドの詳細

clone

public Object clone()
エディタキットのコピーを作成します。ある実装がほかの実装のプロトタイプとなるため、それらの実装を迅速に作成できます。
オーバーライド:
クラス StyledEditorKit 内の clone
戻り値:
コピー

getContentType

public String getContentType()
このキットがサポートする MIME タイプのデータを返します。このキットは text/html のタイプをサポートします。
オーバーライド:
クラス DefaultEditorKit 内の getContentType
戻り値:
タイプ

getViewFactory

public ViewFactory getViewFactory()
このキットで作成されるモデルのビューの生成に適したファクトリを取り出します。
オーバーライド:
クラス StyledEditorKit 内の getViewFactory
戻り値:
ファクトリ

createDefaultDocument

public Document createDefaultDocument()
このタイプのエディタに適した初期化されないテキスト格納モデルを作成します。
オーバーライド:
クラス StyledEditorKit 内の createDefaultDocument
戻り値:
モデル

read

public void read(Reader in,
                 Document doc,
                 int pos)
          throws IOException,
                 BadLocationException
指定されたストリームからコンテンツを挿入します。doc が HTMLDocument のインスタンスである場合、HTML 3.2 テキストを読み込みます。空でないドキュメントへの HTML の挿入は、本体要素内部で行う必要があります。本体に挿入しない場合、例外がスローされます。空でないドキュメントへ挿入する場合、本体外部のタグ (ヘッド、タイトル) はすべて削除されます。
オーバーライド:
クラス DefaultEditorKit 内の read
パラメータ:
in - 読み込み元のストリーム
doc - 挿入先
pos - コンテンツを配置するドキュメント内の位置
例外:
IOException - 入出力エラーが発生した場合
BadLocationException - pos がドキュメント内の無効な位置を示す場合
RuntimeException - pos が無効な場合 (結果的に BadLocationException となる)

insertHTML

public void insertHTML(HTMLDocument doc,
                       int offset,
                       String html,
                       int popDepth,
                       int pushDepth,
                       HTML.Tag insertTag)
                throws BadLocationException,
                       IOException
既存のドキュメントに HTML を挿入します。
パラメータ:
doc - 挿入先のドキュメント
offset - HTML の挿入位置のオフセット
popDepth - 挿入の前に生成される ElementSpec.EndTagType タグの数
pushDepth - 終了タグの生成後、挿入前に生成される ElementSpec.JoinNextDirection の方向を持つ ElementSpec.StartTagType のタグの数
insertTag - ドキュメントへの挿入を開始する最初のタグ
例外:
RuntimeException - pos が無効な場合 (結果的に BadLocationException となる)

write

public void write(Writer out,
                  Document doc,
                  int pos,
                  int len)
           throws IOException,
                  BadLocationException
このタイプのコンテンツハンドラに適合した書式であることが期待されるストリームに、ドキュメントのコンテンツを適した形式でストリームに挿入します。
オーバーライド:
クラス DefaultEditorKit 内の write
パラメータ:
out - 書き込み先のストリーム
doc - 書き込み元
pos - コンテンツを取得するドキュメント内の位置
len - 書き出す量
例外:
IOException - 入出力エラーが発生した場合
BadLocationException - pos がドキュメント内の無効な位置を示す場合

install

public void install(JEditorPane c)
キットが JEditorPane にインストールされるときに呼び出されます。
オーバーライド:
クラス StyledEditorKit 内の install
パラメータ:
c - JEditorPane

deinstall

public void deinstall(JEditorPane c)
キットが JEditorPane から削除されているときに呼び出されます。このメソッドは、追加されたリスナーの登録を解除するために使用されます。
オーバーライド:
クラス StyledEditorKit 内の deinstall
パラメータ:
c - JEditorPane

setStyleSheet

public void setStyleSheet(StyleSheet s)
各種の HTML 要素の描画に使用されるスタイルセットを設定します。これらのスタイルは CSS 仕様に基づいて指定されます。キットで作成される各ドキュメントには、ドキュメント専用のスタイルを登録できるシートのコピーが添付されます。デフォルトでは、指定される StyleSheet はすべての HTMLEditorKit のインスタンスが共有します。必要に応じて、このメソッドを実装し直してより詳細な設定を行います。

getStyleSheet

public StyleSheet getStyleSheet()
HTML 要素の描画に使用されているスタイルセットを返します。デフォルトでは、DEFAULT_CSS で指定されるリソースがロードされ、すべての HTMLEditorKit のインスタンスで共有されます。

getActions

public Action[] getActions()
エディタのコマンドリストを取り出します。これは、書式処理のためにローカルで定義されたコマンドのコレクションによって追加されたスーパークラスによってサポートされるコマンドのリストです。
オーバーライド:
クラス StyledEditorKit 内の getActions
戻り値:
コマンドリスト

createInputAttributes

protected void createInputAttributes(Element element,
                                     MutableAttributeSet set)
element の AttributeSet 内のキーと値のペアを set にコピーします。このメソッドは、コンポーネント、アイコン、要素名の各属性はコピーしません。サブクラスでは、どの属性をコピーしてどの属性をコピーしないかを変更してもかまいません。ただし、最初に set 内のすべての属性を必ず削除してください。

このメソッドは、キャレットが別の位置に移動するたびに呼び出されます。

オーバーライド:
クラス StyledEditorKit 内の createInputAttributes

getInputAttributes

public MutableAttributeSet getInputAttributes()
書式付き編集アクションに使用される入力属性を返します。
オーバーライド:
クラス StyledEditorKit 内の getInputAttributes
戻り値:
属性セット

setDefaultCursor

public void setDefaultCursor(Cursor cursor)
デフォルトのカーソルを設定します。
導入されたバージョン:
1.3

getDefaultCursor

public Cursor getDefaultCursor()
デフォルトのカーソルを返します。
導入されたバージョン:
1.3

setLinkCursor

public void setLinkCursor(Cursor cursor)
リンク上で使用するカーソルを設定します。
導入されたバージョン:
1.3

getLinkCursor

public Cursor getLinkCursor()
ハイパーリンク上で使用するカーソルを設定します。

getParser

protected HTMLEditorKit.Parser getParser()
HTML ストリームの読み込みに使用するパーサを取り出します。このメソッドを実装し直して別のパーサを提供することができます。デフォルトの実装は動的にロードされます。これは、デフォルトの実装が使用されない場合の、デフォルトのパーサのロードによるオーバーヘッドを避けるためです。デフォルトのパーサは、HTML 3.2 DTD を使用する HotJava です。

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.