モジュール java.desktop
パッケージ javax.swing.text.html

クラスHTMLEditorKit

  • すべての実装されたインタフェース:
    Serializable, Cloneable, Accessible

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

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

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

    HTMLのモデル化は、HTMLDocumentクラスで提供されています。 HTMLのモデル化については、そのドキュメントに詳しく記載されています。 編集のサポートは、主にtextパッケージで提供されます。

    拡張可能/スケーラブル
    このキットを無駄なく活用できるようにするために、キットを拡張可能にする努力が払われています。 次にその内容の一部を示します。
    1. パーサーは置換え可能です。 デフォルトのパーサーはDTDに基づいたHotJavaパーサーです。 別のDTDを使ったり、まったく別のパーサーを使うこともできます。 パーサーを変更するには、getParserメソッドを実装し直してください。 デフォルトのパーサーは、最初の要求があったときに動的にロードされるため、別のパーサーを使用する場合はロードされません。 デフォルトのパーサーは、このパッケージとは独立に、下位のparserパッケージにあります。
    2. パーサーは、HTMLDocumentによって提供されるParserCallbackを作動させます。 コールバックを変更するには、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クラスによって行われます。
    現在のLAFからのカスタマイズ
    HTMLは、よく知られた表示機能を提供しますが、その表示特性は正確には指定されていません。 Swingは、Look & Feelの実装にテーマ・メカニズムを持っています。 このLook & Feelが、HTMLビューに表示特性を与えるようになっていれば便利です。 たとえば、視力の弱い人が、通常よりコントラストが強くサイズの大きいフォントを使えるようになります。

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

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

    関連項目:
    直列化された形式
    • フィールドの詳細

      • DEFAULT_CSS

        public static final String DEFAULT_CSS
        タグ表示を設定するデフォルトのCascading Style Sheetファイルです。
        関連項目:
        定数フィールド値
      • 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
        論理スタイル選択処理識別子です。論理スタイルは引数として渡されます。
        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • HTMLEditorKit

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

      • getContentType

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

        public ViewFactory getViewFactory()
        このキットが作成した任意のモデルのビューを作成するのに適したファクトリを取得します。
        オーバーライド:
        getViewFactory、クラス: StyledEditorKit
        戻り値:
        ファクトリ
      • createDefaultDocument

        public Document createDefaultDocument()
        この型のエディタに適している未初期化テキスト・ストレージ・モデルを作成します。
        オーバーライド:
        createDefaultDocument、クラス: StyledEditorKit
        戻り値:
        モデル
      • read

        public void read​(Reader in,
                         Document doc,
                         int pos)
                  throws IOException,
                         BadLocationException
        指定されたストリームからコンテンツを挿入します。 docがHTMLDocumentのインスタンスである場合は、HTML 3.2テキストが読み取られます。 空でないドキュメントへのHTMLの挿入は、body要素の内側にする必要があります。本文に挿入しない場合、例外がスローされます。 空でないドキュメントへの挿入時は、bodyの外側のタグ(head、title)がすべて削除されます。
        オーバーライド:
        read、クラス: DefaultEditorKit
        パラメータ:
        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.EndTagTypesタグの数
        html - HTML文字列
        pushDepth - 終了タグの生成後、挿入前に生成されるElementSpec.JoinNextDirectionの方向を持つElementSpec.StartTagTypeタグの数
        insertTag - ドキュメントへの挿入を開始する最初のタグ
        例外:
        BadLocationException - offsetが無効な場合
        IOException - I/Oエラー
        RuntimeException - posが無効な場合(結果的にBadLocationExceptionになる)
      • write

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

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

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

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

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

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

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

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

        オーバーライド:
        createInputAttributes、クラス: StyledEditorKit
        パラメータ:
        element - 要素
        set - 属性
      • setDefaultCursor

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

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

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

        public Cursor getLinkCursor()
        ハイパーリンク上で使用するカーソルを返します。
        戻り値:
        カーソル
        導入されたバージョン:
        1.3
      • isAutoFormSubmission

        public boolean isAutoFormSubmission()
        htmlフォームの送信が自動的に処理されるか、FormSubmitEventがトリガーされるだけかを示します。
        戻り値:
        htmlフォームの送信が自動的に処理される場合はtrue、そうでない場合はfalse。
        導入されたバージョン:
        1.5
        関連項目:
        setAutoFormSubmission(boolean)
      • setAutoFormSubmission

        public void setAutoFormSubmission​(boolean isAuto)
        htmlフォームの送信が自動的に処理されるか、FormSubmitEventがトリガーされるだけかを示します。 デフォルトでは、trueに設定されます。
        パラメータ:
        isAuto - true、htmlフォームの提出が自動的に処理される場合。
        導入されたバージョン:
        1.5
        関連項目:
        isAutoFormSubmission(), FormSubmitEvent
      • clone

        public Object clone()
        編集キットのコピーを作成します。
        オーバーライド:
        clone、クラス: StyledEditorKit
        戻り値:
        コピー
        関連項目:
        Cloneable
      • getParser

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

        public AccessibleContext getAccessibleContext()
        このエディタ・キットに関連付けられたAccessibleContextを返します
        定義:
        getAccessibleContext、インタフェース: Accessible
        戻り値:
        この編集キットに関連したAccessibleContext
        導入されたバージョン:
        1.4