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

クラスJEditorPane

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable
直系の既知のサブクラス:
JTextPane

@JavaBean(defaultProperty="UIClassID", description="A text component to edit various types of content.") public class JEditorPane extends JTextComponent
さまざまな種類のコンテンツを編集するためのテキスト・コンポーネントです。 使用方法およびエディタ・ペインの例については、「The Java Tutorial」の「Using Text Components」を参照してください。

このコンポーネントは、EditorKitの実装を使用して動作します。 指定されたコンテンツの種類に対応する適切な種類のテキスト・エディタとして動作します。 ある時点でエディタに設定されるコンテンツ形式は、現在インストールされているEditorKitによって決まります。 コンテンツが新しいURLに設定された場合、そのコンテンツ形式により、そのコンテンツをロードするのにどのEditorKitを使用する必要があるかが判定されます。

デフォルトでは、次のコンテンツ形式に対応しています。

text/plain
プレーン・テキスト。指定された形式を認識できない場合のデフォルトです。 この場合に使用されるキットは、ラップされたプレーン・テキスト・ビューを生成するDefaultEditorKitの拡張です。
text/html
HTMLテキスト。 この場合に使用されるキットは、HTML 3.2をサポートするjavax.swing.text.html.HTMLEditorKitクラスです。
text/rtf
RTFテキスト。 この場合に使用されるキットは、リッチ・テキスト形式を制限付きでサポートするjavax.swing.text.rtf.RTFEditorKitクラスです。

このコンポーネントには、次のような方法でコンテンツをロードできます。

  1. setTextメソッドを使うと、文字列からコンポーネントを初期化できます。 この場合、現在のEditorKitが使われ、コンテンツ・タイプはこの形式であることが要求されます。
  2. readメソッドを使うと、Readerからコンポーネントを初期化できます。 コンテンツ形式がHTMLの場合、<base>タグが使われていないか、またはHTMLDocumentBaseプロパティが設定されていないと、イメージなどの相対参照を解決できません。 この場合、現在のEditorKitが使われ、コンテンツ・タイプはこの形式であることが要求されます。
  3. setPageメソッドを使うと、URLからコンポーネントを初期化できます。 この場合、コンテンツ形式はURLから判断され、そのコンテンツ形式に登録されているEditorKitが設定されます。

コンテンツの種類によっては、ハイパーリンク・イベントを生成することによってハイパーリンクのサポートを提供できます。 HTML EditorKitは、JEditorPane編集可能でない場合(JEditorPane.setEditable(false);が呼び出されている場合)にハイパーリンク・イベントを生成します。 ドキュメントにHTMLフレームが埋め込まれている場合、通常の応答では現在のドキュメントの一部が変更されます。 次のコード・フラグメントは、ハイパーリンク・リスナーの実装例です。この例では、HTMLフレーム・イベントは特別に扱われますが、他のすべてのアクティブなハイパーリンクは表示されるのみです。


     class Hyperactive implements HyperlinkListener {
 
         public void hyperlinkUpdate(HyperlinkEvent e) {
             if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                 JEditorPane pane = (JEditorPane) e.getSource();
                 if (e instanceof HTMLFrameHyperlinkEvent) {
                     HTMLFrameHyperlinkEvent  evt = (HTMLFrameHyperlinkEvent)e;
                     HTMLDocument doc = (HTMLDocument)pane.getDocument();
                     doc.processHTMLFrameHyperlinkEvent(evt);
                 } else {
                     try {
                         pane.setPage(e.getURL());
                     } catch (Throwable t) {
                         t.printStackTrace();
                     }
                 }
             }
         }
     }

 

text/htmlのレンダリング方法のカスタマイズについては、W3C_LENGTH_UNITSHONOR_DISPLAY_PROPERTIESを参照してください。

ドキュメント内の文化依存情報は、文字エンコーディングと呼ばれるメカニズムによって扱われます。 文字エンコーディングとは、文字セットの構成要素(文字、表意文字、数字、記号、制御文字)と特定の数値コードの明確なマッピングです。 これは、ファイルの保存方法を表しています。 文字エンコーディングには、ISO-8859-1、ISO-8859-5、Shift-jis、Euc-jp、UTF-8などがあります。 ファイルは、ユーザー・エージェント(JEditorPane)に渡されるときに、ドキュメントの文字セット(ISO-10646、別名Unicode)に変換されます。

JEditorPaneで使われる文字セットを指定する方法は複数あります。

  1. 1つは、文字セットをMIME形式のパラメータとして指定する方法です。 この方法では、setContentTypeメソッドを呼び出す必要があります。 コンテンツがsetPageメソッドによってロードされる場合、コンテンツ形式はURLの指定に従って設定されます。 ファイルが直接ロードされる場合、コンテンツ形式はロードの前に設定される必要があります。
  2. 文字セットを指定するもう1つの方法は、ドキュメント自体にあります。 この場合、必要な文字セットを特定する前にドキュメントを読み込む必要があります。 これを処理するためには、EditorKit読込みオペレーションによってスローされるChangedCharSetExceptionをキャッチする必要があります。 読込み自体はChangedCharSetException (IOException)で指定された文字セットを使用する新しいリーダーでふたたび開始されます。
Newlines
改行の処理方法については、DefaultEditorKitを参照してください。

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

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