|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.text.JTextComponent | +--javax.swing.JEditorPane
さまざまな種類のコンテンツを編集するためのテキストコンポーネントです。使用方法およびエディタ区画の例については、「The Java Tutorial」の「Using Text Components」を参照してください。
このコンポーネントは EditorKit
の実装を使用して動作します。指定されたコンテンツの種類に対応して適切な種類のテキストエディタになります。ある時点でエディタに設定されるコンテンツタイプは、現在インストールされている EditorKit
によって決まります。コンテンツが新しい URL に設定された場合、そのタイプを使って、そのコンテンツをロードするのにどの EditorKit
を使用する必要があるかが判定されます。
デフォルトでは、次のコンテンツタイプに対応しています。
DefaultEditorKit
の拡張です。
javax.swing.text.html.HTMLEditorKit
クラスです。
javax.swing.text.rtf.RTFEditorKit
クラスです。
このコンポーネントには、次のような方法でコンテンツをロードできます。
EditorKit
が使われ、コンテンツタイプはこの EditorKit のタイプであることが要求されます。
EditorKit
が使われ、コンテンツタイプはこの EditorKit
のタイプであることが要求されます。
EditorKit
が設定されます。
標準の Look & Feel (L&F) 表現でこのコンポーネントが使用するキーボードのキーについては、JEditorPane のキーの割り当てを参照してください。
コンテンツによっては、ハイパーリンクイベントを生成することによってハイパーリンクのサポートを提供します。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();
}
}
}
}
}
ドキュメント内の文化に依存する情報は、文字エンコーディングと呼ばれる機構によって扱われます。文字エンコーディングとは、文字セットの構成要素 (文字、表意文字、数字、記号、制御文字) と特定の数値コードの明白なマッピングであり、ファイルへの保存方法を表します。文字エンコーディングには、ISO-8859-1、ISO-8859-5、Shift-jis、Euc-jp、UTF-8 などがあります。ファイルは、ユーザエージェント (JEditorPane
) に渡されるときに、ドキュメントの文字セット (ISO-10646、別名 Unicode) に変換されます。
JEditorPane
で使われる文字セットを指定する方法は複数あります。
EditorKit
読み込みオペレーションによってスローされる ChangedCharSetException
をキャッチすることが必要です。次に読み込みは ChangedCharSetException
(IOException
) において指定された文字セットを使う新しいリーダで再び開始されます。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。
内部クラスの概要 | |
protected class |
JEditorPane.AccessibleJEditorPane
このクラスは JEditorPane クラス用のユーザ補助機能のサポートを実装しています。 |
protected class |
JEditorPane.AccessibleJEditorPaneHTML
このクラスは AccessibleHypertext のサポートを提供し、JEditorPane にインストールされた EditorKit が HTMLEditorKit のインスタンスである場合のインスタンスで使用されます。
|
protected class |
JEditorPane.JEditorPaneAccessibleHypertextSupport
AccessibleJEditorPaneHTML.getAccessibleText によって返されるものを取得します。
|
クラス javax.swing.text.JTextComponent から継承した内部クラス |
JTextComponent.AccessibleJTextComponent, JTextComponent.KeyBinding |
クラス javax.swing.JComponent から継承した内部クラス |
JComponent.AccessibleJComponent |
クラス java.awt.Container から継承した内部クラス |
Container.AccessibleAWTContainer |
クラス java.awt.Component から継承した内部クラス |
Component.AccessibleAWTComponent |
クラス javax.swing.text.JTextComponent から継承したフィールド |
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY |
クラス javax.swing.JComponent から継承したフィールド |
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
クラス java.awt.Component から継承したフィールド |
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
インタフェース java.awt.image.ImageObserver から継承したフィールド |
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
コンストラクタの概要 | |
JEditorPane()
新しい JEditorPane を作成します。 |
|
JEditorPane(String url)
URL 指定を示す文字列を基にして、 JEditorPane を作成します。 |
|
JEditorPane(String type,
String text)
指定されたテキストに初期化されている JEditorPane を作成します。 |
|
JEditorPane(URL initialPage)
入力のために指定された URL を基にして、 JEditorPane を作成します。 |
メソッドの概要 | |
void |
addHyperlinkListener(HyperlinkListener listener)
変更の通知のためにハイパーリンクリスナーを追加します。 |
protected EditorKit |
createDefaultEditorKit()
コンポーネントが初めて作成されたときに、デフォルトのエディタキット ( PlainEditorKit ) を作成します。 |
static EditorKit |
createEditorKitForContentType(String type)
エディタキットのデフォルトのレジストリから、指定されたコンテンツタイプのハンドラを作成します。 |
void |
fireHyperlinkUpdate(HyperlinkEvent e)
このタイプのイベントの通知を、登録してあるすべてのリスナーに通知します。 |
AccessibleContext |
getAccessibleContext()
この JEditorPane に関連した AccessibleContext を返します。 |
String |
getContentType()
このエディタが処理するように現在設定されているコンテンツタイプを返します。 |
EditorKit |
getEditorKit()
コンテンツの処理のために現在インストールされているキットを返します。 |
static String |
getEditorKitClassNameForContentType(String type)
タイプ type に現在登録されている EditorKit クラス名を返します。 |
EditorKit |
getEditorKitForContentType(String type)
指定されたコンテンツタイプで使用するエディタキットを取り出します。 |
URL |
getPage()
表示されている現在の URL を返します。 |
Dimension |
getPreferredSize()
JEditorPane の適切なサイズを返します。 |
boolean |
getScrollableTracksViewportHeight()
この Scrollable の高さが必ずビューポートの高さと一致することをビューポートが強制する場合に true を返します。 |
boolean |
getScrollableTracksViewportWidth()
ビューポートが常にこの Scrollable の幅を強制的にビューポートの幅に一致させる場合に true を返します。 |
protected InputStream |
getStream(URL page)
setPage メソッドによりロードされようとしている指定された URL のストリームを返します。 |
String |
getText()
この TextComponent に格納されているテキストをこのエディタのコンテンツタイプで返します。 |
String |
getUIClassID()
UI のクラス ID を返します。 |
boolean |
isFocusCycleRoot()
JEditorPane をフォーカスサイクルのルートにします。 |
boolean |
isManagingFocus()
フォーカスを得たあとにタブトラバーサルをオフに設定します。 |
protected String |
paramString()
この JEditorPane の文字列表現を返します。 |
protected void |
processComponentKeyEvent(KeyEvent e)
Shift + Tab タブ処理を扱うためにオーバーライドされます。 |
protected void |
processKeyEvent(KeyEvent e)
Tab イベントおよび Shift + Tab イベントを使用することにより、awt がフォーカスのトラバースを行わないようにします。 |
void |
read(InputStream in,
Object desc)
このメソッドは、ストリームから初期化を行います。 |
static void |
registerEditorKitForContentType(String type,
String classname)
コンテンツタイプ と classname のデフォルトのバインディングを作成します。 |
static void |
registerEditorKitForContentType(String type,
String classname,
ClassLoader loader)
type と classname のデフォルトのバインディングを作成します。 |
void |
removeHyperlinkListener(HyperlinkListener listener)
ハイパーリンクリスナーを削除します。 |
void |
replaceSelection(String content)
現在選択されているコンテンツを、指定された文字列で表される新しいコンテンツと置き換えます。 |
protected void |
scrollToReference(String reference)
指定された参照位置 (表示されている URL に対する URL.getRef メソッドによって返される値) までビューをスクロールします。 |
void |
setContentType(String type)
このエディタが処理するコンテンツタイプを設定します。 |
void |
setEditorKit(EditorKit kit)
コンテンツの処理のために現在インストールされているキットを設定します。 |
void |
setEditorKitForContentType(String type,
EditorKit k)
指定されたコンテンツタイプで使用できるようにエディタキットを直接設定します。 |
void |
setPage(String url)
表示されている現在の URL を設定します。 |
void |
setPage(URL page)
表示されている現在の URL を設定します。 |
void |
setText(String t)
この TextComponent のテキストを指定されたコンテンツ (このエディタのコンテンツタイプでなければならない) に設定します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
public JEditorPane()
JEditorPane
を作成します。ドキュメントモデルは null
に設定されます。public JEditorPane(URL initialPage) throws IOException
JEditorPane
を作成します。initialPage
- URLIOException
- URL が null
であるか、アクセスできない場合public JEditorPane(String url) throws IOException
JEditorPane
を作成します。url
- URLIOException
- URL が null
であるか、アクセスできない場合public JEditorPane(String type, String text)
JEditorPane
を作成します。これは、setContentType
メソッドおよび setText
メソッドを呼び出す簡易コンストラクタです。type
- 指定されたテキストの MIME 形式text
- 初期化に使うテキストメソッドの詳細 |
public void addHyperlinkListener(HyperlinkListener listener)
listener
- リスナーpublic void removeHyperlinkListener(HyperlinkListener listener)
listener
- リスナーpublic void fireHyperlinkUpdate(HyperlinkEvent e)
EditorKit
によって呼び出されます。リスナーのリストは末尾から先頭への順序で処理されます。e
- イベントEventListenerList
public void setPage(URL page) throws IOException
null
ではない場合、新しいデフォルトドキュメントが作成され、URL がそのドキュメントに読み込まれます。URL に参照位置が含まれている場合は、scrollToReference
メソッドを呼び出すと、その参照位置までスクロールされます。目的の URL が現在表示されていない場合、getStream
メソッドが呼び出されて、指定されたストリームに対する制御がサブクラスに渡されます。
このメソッドは、EditorKit
によって返されるドキュメントに基づいて同期的または非同期的にロードを行います。ドキュメント
が AbstractDocument
型で、AbstractDocument.getAsynchronousLoadPriority
によって返された 0 以上の値を持つ場合、そのページはその優先順位により別々のスレッドでロードされます。
ドキュメントが同期的にロードされる場合、そのドキュメントは、setDocument
(ドキュメントをエディタに関連付け、プロパティ変更イベントをトリガーする) の呼び出しによって、エディタにインストールされる前にストリームで満たされます。IOException
がスローされた場合、部分的にロードされたドキュメントは破棄され、ドキュメントプロパティ変更イベントもページプロパティ変更イベントもトリガーされません。ドキュメントが正常にロードおよびインストールされた場合、UI によってそのドキュメントのビューが作成され (必要な場合はさらにスクロールされ)、ページプロパティ変更イベントがトリガーされます。
ドキュメントが非同期的にロードされる場合、ドキュメントは setDocument
(ドキュメントプロパティ変更イベントをトリガーする) の呼び出しを使ってただちにエディタにインストールされ、次に実際のロードを開始するスレッドが生成されます。この場合、ページプロパティ変更イベントはこのメソッドの呼び出しによって直接トリガーされることはなく、ロードを実行するスレッドが終了したときにトリガーされます。呼び出し側のスレッドはもう一方のスレッドでエラーが発生した場合に IOException
をスローできないので、ロードが成功したかどうかに関係なく、ページプロパティ変更イベントはもう一方のスレッドが終了したときにトリガーされます。
page
- ページの URLIOException
- null
または無効なページが指定された場合、あるいは読み込み中のストリームから例外が発生した場合getPage()
public void read(InputStream in, Object desc) throws IOException
HTMLEditorKit
型に設定されている場合、desc
パラメータが HTMLDocument
のときは、このメソッドは HTMLEditorKit
を呼び出すことにより読み込みを開始します。そうでない場合は、プレーンテキストとしてモデルをロードするスーパークラスメソッドを呼び出します。in
- 読み込み元のストリームdesc
- ストリームを記述するオブジェクトIOException
- 初期化に使われるストリームによってスローされるJTextComponent.read(java.io.Reader, java.lang.Object)
,
JTextComponent.setDocument(javax.swing.text.Document)
protected InputStream getStream(URL page) throws IOException
setPage
メソッドによりロードされようとしている指定された URL のストリームを返します。デフォルトでは、このメソッドは単に URL をオープンし、ストリームを返します。このメソッドを実装し直すと、キャッシュからのストリームの取り出し、ストリームの進捗状況の監視などの便利な機能を実行できます。
このメソッドは、コンテンツタイプを確立し、その結果としてストリームのロードに使う適切な EditorKit
を設定すると考えられます。
このストリームが http 接続の場合、続いてリダイレクトが行われ、その結果 URL は相対 URL を適切に解決できるように Document.StreamDescriptionProperty
として設定されます。
page
- ページの URLprotected void scrollToReference(String reference)
URL.getRef
メソッドによって返される値) までビューをスクロールします。デフォルトでは、このメソッドは HTMLDocument 内での参照位置を認識しているだけです。実際のスクロール処理を実行するには、実装により scrollRectToVisible
メソッドを呼び出します。HTML 以外のドキュメント形式で参照位置へのスクロールが必要な場合は、このメソッドを再実装する必要があります。このメソッドは、コンポーネントが可視状態でない場合は無効です。reference
- スクロール先となる指定された位置public URL getPage()
null
を返し、相対 URL は解決されません。null
public void setPage(String url) throws IOException
url
- 表示用の URLIOException
- null
または無効な URL 指定の場合public String getUIClassID()
JComponent
内の getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
protected EditorKit createDefaultEditorKit()
PlainEditorKit
) を作成します。public EditorKit getEditorKit()
createDefaultEditorKit
が呼び出されます。public final String getContentType()
EditorKit
に関連したタイプになるように定義されています。null
public final void setContentType(String type)
getEditorKitForContentType
を呼び出し、エディタキットが正しく検出できたら setEditorKit
を呼び出します。このメソッドは、setEditorKit
の直接呼び出しの代わりに使用できる、簡易メソッドといえるものです。
コンテンツタイプ指定のパラメータとして文字セットの定義が指定されている場合、関連した EditorKit
を使って入力ストリームをロードするときは、その文字セットが使われます。たとえば、タイプが text/html; charset=EUC-JP
として指定されている場合、コンテンツは、text/html
に登録されている EditorKit
を使ってロードされ、ドキュメントに Unicode をロードするために EditorKit
に提供されるリーダは、Unicode に変換するために EUC-JP
文字セットを使います。
type
- コンテンツを編集するための null
ではない MIME 形式getContentType()
public void setEditorKit(EditorKit kit)
null
ではない場合、新しいキットがインストールされ、デフォルトドキュメントが作成されます。setEditorKit
が呼び出されると、常に PropertyChange
イベント ("editorKit") がトリガーされます。
注: EditorKit
は特定のタイプのコンテンツをモデル化するソースであるため、モデルを変更するという副作用があります。このメソッドを使用すると、内部状態の完全性を保証するために、呼び出し側に代わり setDocument
が呼び出されます。
kit
- 望ましいエディタ動作getEditorKit()
public EditorKit getEditorKitForContentType(String type)
EditorKit
がない場合は、デフォルトの EditorKit
レジストリから EditorKit
の作成を試みます。作成できなかった場合は、すべてのテキストドキュメントがプレーンテキストとして表示できると仮定して、PlainEditorKit
が使用されます。
このメソッドは、他種のコンテンツタイプレジストリを使用するための再実装が行えます。このメソッドを再実装すれば、たとえば Java Activation Framework を使用できるようになります。
type
- null
ではないコンテンツタイプpublic void setEditorKitForContentType(String type, EditorKit k)
createEditorKitForContentType
とともに使用して、Look & Feel を考慮したコンテンツタイプのハンドラをインストールすることがあります。type
- null
ではないコンテンツタイプk
- 設定されるエディタキットpublic void replaceSelection(String content)
null
の場合)、これは現在の選択領域の削除に相当します。置換後のテキストには、入力用に現在定義されている属性が設定されます。コンポーネントが編集できない状態であれば、ビープ音が鳴って復帰します。
このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。
JTextComponent
内の replaceSelection
content
- 選択領域と置き換えるコンテンツ。null
も可public static EditorKit createEditorKitForContentType(String type)
ClassLoader
とともに登録されていた場合は、その ClassLoader
を使ってプロトタイプがロードされます。登録されている ClassLoader
がなかった場合は、Class.forName
を使ってプロトタイプがロードされます。
プロトタイプ EditorKit
のインスタンスが正しく検出されたら、複製され、その複製が返されます。
type
- コンテンツタイプnull
public static void registerEditorKitForContentType(String type, String classname)
コンテンツタイプ
と classname
のデフォルトのバインディングを作成します。クラスは、あとで実際に必要になったときに動的にロードされ、実際の使用の前に安全に変更できるので、不必要なクラスのロードを避けることができます。プロトタイプ EditorKit
は、このメソッドで登録されたときに、Class.forName
でロードされます。type
- null
ではないコンテンツタイプclassname
- あとでロードするクラスpublic static void registerEditorKitForContentType(String type, String classname, ClassLoader loader)
type
と classname
のデフォルトのバインディングを作成します。クラスは、あとで実際に必要になったときに指定された ClassLoader
を使って動的にロードされ、実際の使用の前に安全に変更できるので、不必要なクラスのロードを避けることができます。type
- null
ではないコンテンツタイプclassname
- あとでロードするクラスloader
- 名前をロードするための ClassLoader
public static String getEditorKitClassNameForContentType(String type)
type
に現在登録されている EditorKit
クラス名を返します。type
- null
ではないコンテンツタイプpublic Dimension getPreferredSize()
JEditorPane
の適切なサイズを返します。JEditorPane
の適切なサイズはスーパークラスの適切なサイズと少し異なります。ビューポートのサイズがコンポーネントの最小サイズより小さくなった場合、幅または高さをトラックするための scrollable 定義が false に変わります。デフォルトのビューポートレイアウトは適切なサイズを返しますが、このサイズは scrollable がトラックしている場合には適切ではありません。その場合、通常の適切なサイズが最小サイズにあわせて調整されます。これにより、HTML テーブルなどは最小サイズに縮小され、そのサイズで配置されます。最小サイズより小さくなることはありません。JComponent
内の getPreferredSize
Dimension
public boolean isManagingFocus()
JComponent
内の isManagingFocus
public boolean isFocusCycleRoot()
JEditorPane
をフォーカスサイクルのルートにします。つまり、デフォルトでは、エディタ区画内でのタブ移動は、フォームコントロールのようにその区画のコンポーネント間を移動しますが、区画の外には移動しません。
このメソッドは常に true を返します。
JComponent
内の isFocusCycleRoot
JComponent.isFocusCycleRoot()
protected void processComponentKeyEvent(KeyEvent e)
e
がタブを識別し、エディタ区画が編集不可でコンポーネントがある場合は、FocusManager
は次または前のコンポーネントにフォーカスを渡すよう促されます。JComponent
内の processComponentKeyEvent
e
- 現在のキーイベントprotected void processKeyEvent(KeyEvent e)
JComponent
内の processKeyEvent
e
- 現在のキーイベントpublic void setText(String t)
TextComponent
のテキストを指定されたコンテンツ (このエディタのコンテンツタイプでなければならない) に設定します。たとえば、タイプが text/html
に設定されている場合、文字列は HTML の形式で指定されます。
現在のドキュメントのコンテンツを削除し、現在の EditorKit
を使用して指定された文字列を解析してコンテンツを置き換えるように実装されます。これにより、コンポーネントに現在設定されているコンテンツタイプをサポートしながら、モデルを変更しないでスーパークラスのセマンティクスが指定されます。前のコンテンツが比較的小さく、副作用がないことが前提になります。この前提がどちらも守られず予期しない結果を生じることがあります。これを避けるために、新しいドキュメント getEditorKit().createDefaultDocument()
を作成して、既存の Document
を新しいものに置き換えます。これで前の Document
が中途半端な状態になることはありません。
文字列と一緒にコンポーネントをロードするもう 1 つ方法は、StringReader を生成して読み込みメソッドを呼び出すというものです。この方法の場合、モデルは初期化が完了すると文字列のコンテンツに置き換えられます。
このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。
JTextComponent
内の setText
t
- 設定する新しいテキストgetText()
public String getText()
TextComponent
に格納されているテキストをこのエディタのコンテンツタイプで返します。テキストの取得時に例外がスローされた場合は、null
が返されます。このメソッドを実装すると、StringWriter
で JTextComponent.write
を呼び出すことができます。JTextComponent
内の getText
setText(java.lang.String)
public boolean getScrollableTracksViewportWidth()
Scrollable
の幅を強制的にビューポートの幅に一致させる場合に true を返します。JTextComponent
内の getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportHeight()
Scrollable
の高さが必ずビューポートの高さと一致することをビューポートが強制する場合に true を返します。JTextComponent
内の getScrollableTracksViewportHeight
Scrollable
の高さを強制的にそれ自体に一致させる場合は true を返し、それ以外の場合は false を返します。protected String paramString()
JEditorPane
の文字列表現を返します。このメソッドはデバッグ専用であり、返される文字列の内容および形式は実装によって異なります。返される文字列は空の場合がありますが、null
にはなりません。JTextComponent
内の paramString
JEditorPane
の文字列表現public AccessibleContext getAccessibleContext()
JTextComponent
内の getAccessibleContext
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.