JavaTM 2 Platform
Standard Ed. 5.0

javax.swing.text
クラス AbstractDocument

java.lang.Object
  上位を拡張 javax.swing.text.AbstractDocument
すべての実装されたインタフェース:
Serializable, Document
直系の既知のサブクラス:
DefaultStyledDocument, PlainDocument

public abstract class AbstractDocument
extends Object
implements Document, Serializable

ドキュメントインタフェースの実装であり、各種のドキュメントを実装するときのベースになります。このレベルではポリシーがごくわずかなので、それに応じて使用が難しくなります。

このクラスは、ドキュメントのロック機構を実装します。この機構によって、複数の読み込みまたはひとつの書き込みを扱えるようになり、複数の書き込みがあっても、ドキュメントのオブザーバ全員に以前の変更が通知されるまで、ドキュメントに別の変更を加えることができません。読み込みロックの取得および解放には、render メソッドを使います。書き込みロックは、ドキュメントを変更するメソッドによって取得され、そのメソッド呼び出しの間は保持されます。通知は、ドキュメントを変更するスレッド上で行われます。このスレッドは、通知の間はドキュメントへの完全な読み込みアクセス権を持っています。一方で、その他の書き込み側は、通知が完了するまではアクセスを許されません。通知は Beans イベント通知であり、すべてのリスナーが通知を受け取るまでは他の変更を許可しません。

このクラスからサブクラス化された任意のモデルで、BasicTextUI から派生した Look & Feel の実装を持つテキストコンポーネントと関連して使用されるものは、安全に非同期に更新されます。これは、ドキュメントのタイプが AbstractDocument の場合には、View 階層へのすべてのアクセスが BasicTextUI によって直列化されるからです。ロック機構では、独立したスレッドの View 階層へのアクセスは必ず DocumentListener メソッドを介して行われ、また、ある 1 つの時点にはアクティブなスレッドは 1 つしか存在しないと見なします。

同期のサポートが必要な場合は、さらに次の前提条件があります。任意の DocumentListener および UndoListener の実装に対するコードパスがスレッドに対して安全であること、また、デッドロックを避ける場合には、コンポーネントのロックにアクセスしないこと、という条件です。JComponent の repaint メソッドおよび revalidate メソッドは安全です。

AbstractDocument はドキュメントの最後に暗黙のブレークをモデル化します。さまざまなことが可能ですが、その 1 つとして最後の文字のあとにキャレットを配置できます。その結果、Content より短い getLength を返します。独自の Content を生成する場合は、文字を追加して初期化するようにしてください。この例については StringContent と GapContent を参照してください。別の前提条件は、暗黙の最終文字をモデル化する Elements は endOffset == (getLength() + 1) となることです。たとえば、DefaultStyledDocument の場合は getParagraphElement(getLength()).getEndOffset() == getLength() + 1 です。

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


入れ子のクラスの概要
 class AbstractDocument.AbstractElement
          要素の抽象部分を実装します。
static interface AbstractDocument.AttributeContext
          このインタフェースは、プラグイン可能な属性圧縮手法を MutableAttributeSet の実装で使用可能にするために使用できます。
 class AbstractDocument.BranchElement
          他の要素を含む複合要素を実装します。
static interface AbstractDocument.Content
          編集可能な文字のシーケンスを示すインタフェースです。
 class AbstractDocument.DefaultDocumentEvent
          ドキュメントが変更された場合に、ドキュメントの変更を格納します。
static class AbstractDocument.ElementEdit
          ドキュメントのイベントに追加できる ElementChange の実装です。
 class AbstractDocument.LeafElement
          ある種のコンテンツを直接表す要素を実装します。
 
フィールドの概要
protected static String BAD_LOCATION
          不正な位置を示すエラーメッセージです。
static String BidiElementName
          一方向の実行を示す要素の名前です。
static String ContentElementName
          内容を示す要素の名前です。
static String ElementNameAttribute
          要素の名前の指定に使う属性の名前です。
protected  EventListenerList listenerList
          ドキュメントのイベントリスナーです。
static String ParagraphElementName
          段落を示す要素の名前です。
static String SectionElementName
          行、段落などのセクションを示す要素の名前です。
 
インタフェース javax.swing.text.Document から継承されたフィールド
StreamDescriptionProperty, TitleProperty
 
コンストラクタの概要
protected AbstractDocument(AbstractDocument.Content data)
          なんらかのコンテンツ記憶機構をラップした、新しい AbstractDocument を構築します。
protected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
          なんらかのコンテンツ記憶機構をラップした、新しい AbstractDocument を構築します。
 
メソッドの概要
 void addDocumentListener(DocumentListener listener)
          ドキュメントリスナーを追加し、変更があったときに通知されるようにします。
 void addUndoableEditListener(UndoableEditListener listener)
          任意の変更を通知するアンドゥリスナーを追加します。
protected  Element createBranchElement(Element parent, AttributeSet a)
          ドキュメントの枝の要素を作成します。
protected  Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
          ドキュメントの葉の要素を作成します。
 Position createPosition(int offs)
          ドキュメントが変更されたときに、変更を追跡する位置を返します。
 void dump(PrintStream out)
          診断用のダンプを出力します。
protected  void fireChangedUpdate(DocumentEvent e)
          このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。
protected  void fireInsertUpdate(DocumentEvent e)
          このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。
protected  void fireRemoveUpdate(DocumentEvent e)
          このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。
protected  void fireUndoableEditUpdate(UndoableEditEvent e)
          このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。
 int getAsynchronousLoadPriority()
          非同期ロードの優先順位を取得します。
protected  AbstractDocument.AttributeContext getAttributeContext()
          属性を管理するためのコンテキストを返します。
 Element getBidiRootElement()
          ドキュメントの双方向構造のルート要素を返します。
protected  AbstractDocument.Content getContent()
          ドキュメントの内容を返します。
protected  Thread getCurrentWriter()
          現在の書き込みスレッドがあれば、それを返します。
abstract  Element getDefaultRootElement()
          ルート要素を返します。
 DocumentFilter getDocumentFilter()
          挿入または削除のフィルタを行う DocumentFilter を返します。
 DocumentListener[] getDocumentListeners()
          このドキュメントに登録された、すべてのドキュメントリスナーからなる配列を返します。
 Dictionary<Object,Object> getDocumentProperties()
          プロパティのセットの管理をサポートします。
 Position getEndPosition()
          ドキュメントの末尾を表す位置を返します。
 int getLength()
          データの長さを返します。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          このドキュメント上で FooListener として現在登録されている、すべてのオブジェクトからなる配列を返します。
abstract  Element getParagraphElement(int pos)
          指定された位置を含む段落要素を返します。
 Object getProperty(Object key)
          プロパティの値を調べるのに便利なメソッドです。
 Element[] getRootElements()
          定義されているルート要素をすべて返します。
 Position getStartPosition()
          ドキュメントの先頭を表す位置を返します。
 String getText(int offset, int length)
          ドキュメントからテキストのシーケンスを取得します。
 void getText(int offset, int length, Segment txt)
          ドキュメントの指定部分内にあるテキストを取り出します。
 UndoableEditListener[] getUndoableEditListeners()
          このドキュメントに登録された、すべての取り消し可能編集リスナーからなる配列を返します。
 void insertString(int offs, String str, AttributeSet a)
          ドキュメントに内容を挿入します。
protected  void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
          テキスト挿入の結果として、ドキュメントの構造を更新します。
protected  void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
          テキスト削除の結果として、任意のドキュメントの構造を更新します。
 void putProperty(Object key, Object value)
          プロパティの値を格納するのに便利なメソッドです。
 void readLock()
          ロックを取得して、ドキュメントからなんらかの状態の読み込みを開始できるようにします。
 void readUnlock()
          読み込みのロックを解除します。
 void remove(int offs, int len)
          ドキュメントから内容を削除します。
 void removeDocumentListener(DocumentListener listener)
          ドキュメントリスナーを削除します。
 void removeUndoableEditListener(UndoableEditListener listener)
          アンドゥリスナーを削除します。
protected  void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
          テキスト削除の結果として、任意のドキュメントの構造を更新します。
 void render(Runnable r)
          モデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。
 void replace(int offset, int length, String text, AttributeSet attrs)
          offset から offset + length までのテキストの領域を削除し、text で置き換えます。
 void setAsynchronousLoadPriority(int p)
          非同期ロードの優先順位を設定します。
 void setDocumentFilter(DocumentFilter filter)
          DocumentFilter を設定します。
 void setDocumentProperties(Dictionary<Object,Object> x)
          このドキュメントのドキュメントプロパティの辞書を置き換えます。
protected  void writeLock()
          ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。
protected  void writeUnlock()
          以前 writeLock 経由で取得された書き込みロックを解除します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

listenerList

protected EventListenerList listenerList
ドキュメントのイベントリスナーです。


BAD_LOCATION

protected static final String BAD_LOCATION
不正な位置を示すエラーメッセージです。

関連項目:
定数フィールド値

ParagraphElementName

public static final String ParagraphElementName
段落を示す要素の名前です。

関連項目:
定数フィールド値

ContentElementName

public static final String ContentElementName
内容を示す要素の名前です。

関連項目:
定数フィールド値

SectionElementName

public static final String SectionElementName
行、段落などのセクションを示す要素の名前です。

関連項目:
定数フィールド値

BidiElementName

public static final String BidiElementName
一方向の実行を示す要素の名前です。

関連項目:
定数フィールド値

ElementNameAttribute

public static final String ElementNameAttribute
要素の名前の指定に使う属性の名前です。

関連項目:
定数フィールド値
コンストラクタの詳細

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data)
なんらかのコンテンツ記憶機構をラップした、新しい AbstractDocument を構築します。

パラメータ:
data - コンテンツ

AbstractDocument

protected AbstractDocument(AbstractDocument.Content data,
                           AbstractDocument.AttributeContext context)
なんらかのコンテンツ記憶機構をラップした、新しい AbstractDocument を構築します。

パラメータ:
data - コンテンツ
context - 属性のコンテキスト
メソッドの詳細

getDocumentProperties

public Dictionary<Object,Object> getDocumentProperties()
プロパティのセットの管理をサポートします。呼び出し側は、documentProperties の辞書を使用して、ドキュメント全体に関するプロパティの注釈を付加できます。

戻り値:
null 以外の Dictionary
関連項目:
setDocumentProperties(java.util.Dictionary)

setDocumentProperties

public void setDocumentProperties(Dictionary<Object,Object> x)
このドキュメントのドキュメントプロパティの辞書を置き換えます。

パラメータ:
x - 新規辞書
関連項目:
getDocumentProperties()

fireInsertUpdate

protected void fireInsertUpdate(DocumentEvent e)
このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスは生成されます。

パラメータ:
e - イベント
関連項目:
EventListenerList

fireChangedUpdate

protected void fireChangedUpdate(DocumentEvent e)
このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスは生成されます。

パラメータ:
e - イベント
関連項目:
EventListenerList

fireRemoveUpdate

protected void fireRemoveUpdate(DocumentEvent e)
このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスは生成されます。

パラメータ:
e - イベント
関連項目:
EventListenerList

fireUndoableEditUpdate

protected void fireUndoableEditUpdate(UndoableEditEvent e)
このイベントタイプの通知を配信対象として登録しているリスナーすべてに通知します。fire メソッドに渡されたパラメータを使用して、イベントのインスタンスは生成されます。

パラメータ:
e - イベント
関連項目:
EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
このドキュメント上で FooListener として現在登録されている、すべてのオブジェクトからなる配列を返します。FooListener の登録には、addFooListener メソッドが使用されます。

FooListener.class などのクラスリテラルを使用して、listenerType 引数を指定できます。たとえば以下のコードを使用して、ドキュメント d をそのドキュメントリスナーに照会できます。

DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));
この種のリスナーが存在しない場合、このメソッドでは空の配列が返されます。

パラメータ:
listenerType - 要求されるリスナーのタイプ。java.util.EventListener の下位インタフェースを指定
戻り値:
このコンポーネントに FooListener として登録されたすべてのオブジェクトからなる配列。この種のリスナーが追加されていない場合は空の配列
例外:
ClassCastException - listenerTypejava.util.EventListener を実装するクラスまたはインタフェースを指定しない場合
導入されたバージョン:
1.3
関連項目:
getDocumentListeners(), getUndoableEditListeners()

getAsynchronousLoadPriority

public int getAsynchronousLoadPriority()
非同期ロードの優先順位を取得します。0 より小さい値の場合、ドキュメントは非同期にはロードされません。

戻り値:
非同期ロードの優先順位、またはドキュメントが非同期にロードされない場合は -1

setAsynchronousLoadPriority

public void setAsynchronousLoadPriority(int p)
非同期ロードの優先順位を設定します。

パラメータ:
p - 新規の非同期ロードの優先順位。0 より小さい値は、ドキュメントが非同期にロードされることを表す

setDocumentFilter

public void setDocumentFilter(DocumentFilter filter)
DocumentFilter を設定します。DocumentFilterinsertremove に渡され、条件付きでテキストの挿入や削除が可能になります。null 値は、フィルタが実行されないことを表します。

パラメータ:
filter - テキストの制約に使用される DocumentFilter
導入されたバージョン:
1.4
関連項目:
getDocumentFilter()

getDocumentFilter

public DocumentFilter getDocumentFilter()
挿入または削除のフィルタを行う DocumentFilter を返します。戻り値 null は、フィルタが実行されないことを表します。

戻り値:
DocumentFilter
導入されたバージョン:
1.4
関連項目:
setDocumentFilter(javax.swing.text.DocumentFilter)

render

public void render(Runnable r)
モデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。指定された実行可能ファイルは、その実行中に何の変更もなくモデルを安全に読み取る方法で実行されます。実行可能ファイルは、それ自身で変更を加えることはできません。

この実装は、実行している間、読み込みロックを取得するためのものです。複数を同時に実行している場合、アクティブに描画中のオブジェクトがある間は、すべての書き込みがブロックされます。オブジェクトが例外をスローした場合、そのロックは安全に解放されます。決して終了しないオブジェクトに対する保護はなく、事実上、ドキュメントは自身が存在する間ずっとロックされます。

指定されたオブジェクトがどのような変更を試みても、デッドロックが発生します。この状況を検知できるようにするために個々の描画スレッドを追跡することはできません。また、サブクラスは、描画スレッドの追跡、およびエラーのスローのオーバーヘッドを発生させる可能性があります。

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

定義:
インタフェース Document 内の render
パラメータ:
r - 実行するレンダリング

getLength

public int getLength()
データの長さを返します。ユーザのデータを示す内容の文字数です。

定義:
インタフェース Document 内の getLength
戻り値:
長さ >= 0
関連項目:
Document.getLength()

addDocumentListener

public void addDocumentListener(DocumentListener listener)
ドキュメントリスナーを追加し、変更があったときに通知されるようにします。

定義:
インタフェース Document 内の addDocumentListener
パラメータ:
listener - 追加する DocumentListener
関連項目:
Document.addDocumentListener(javax.swing.event.DocumentListener)

removeDocumentListener

public void removeDocumentListener(DocumentListener listener)
ドキュメントリスナーを削除します。

定義:
インタフェース Document 内の removeDocumentListener
パラメータ:
listener - 削除する DocumentListener
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

getDocumentListeners

public DocumentListener[] getDocumentListeners()
このドキュメントに登録された、すべてのドキュメントリスナーからなる配列を返します。

戻り値:
このドキュメントの DocumentListener すべて。ドキュメントリスナーが登録されていない場合は空の配列
導入されたバージョン:
1.4
関連項目:
addDocumentListener(javax.swing.event.DocumentListener), removeDocumentListener(javax.swing.event.DocumentListener)

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener listener)
任意の変更を通知するアンドゥリスナーを追加します。UndoableEdit で実行される「元に戻す/再実行」操作は、適切な DocumetnEvent を発生させて、ビュー (複数の場合もあり) をモデルと同期させます。

定義:
インタフェース Document 内の addUndoableEditListener
パラメータ:
listener - 追加する UndoableEditListener
関連項目:
Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener listener)
アンドゥリスナーを削除します。

定義:
インタフェース Document 内の removeUndoableEditListener
パラメータ:
listener - 削除する UndoableEditListener
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

getUndoableEditListeners

public UndoableEditListener[] getUndoableEditListeners()
このドキュメントに登録された、すべての取り消し可能編集リスナーからなる配列を返します。

戻り値:
このドキュメントの UndoableEditListener すべて。取り消し可能編集リスナーが登録されていない場合は空の配列
導入されたバージョン:
1.4
関連項目:
addUndoableEditListener(javax.swing.event.UndoableEditListener), removeUndoableEditListener(javax.swing.event.UndoableEditListener)

getProperty

public final Object getProperty(Object key)
プロパティの値を調べるのに便利なメソッドです。これは以下と同等です。

 getDocumentProperties().get(key);
 

定義:
インタフェース Document 内の getProperty
パラメータ:
key - null 以外のプロパティキー
戻り値:
このプロパティの値または null
関連項目:
getDocumentProperties()

putProperty

public final void putProperty(Object key,
                              Object value)
プロパティの値を格納するのに便利なメソッドです。これは以下と同等です。

 getDocumentProperties().put(key, value);
 
valuenull の場合、このメソッドはプロパティを削除します。

定義:
インタフェース Document 内の putProperty
パラメータ:
key - null 以外のキー
value - プロパティの値
関連項目:
getDocumentProperties()

remove

public void remove(int offs,
                   int len)
            throws BadLocationException
ドキュメントから内容を削除します。内容の削除によって、実際の変更が起きるまでの書き込みロックが発生します。オブザーバは、このメソッドを呼び出したスレッド上で変更の通知を受けます。

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

定義:
インタフェース Document 内の remove
パラメータ:
offs - 開始オフセット >= 0
len - 削除対象の文字数 >= 0
例外:
BadLocationException - 指定された削除の位置が、ドキュメント内の有効な位置ではない場合
関連項目:
Document.remove(int, int)

replace

public void replace(int offset,
                    int length,
                    String text,
                    AttributeSet attrs)
             throws BadLocationException
offset から offset + length までのテキストの領域を削除し、text で置き換えます。この動作がどのように実装されるかはその実装に左右され、削除してから挿入を行うというように別々の 2 つの操作として実装することもあれば、置き換えを行うというように 1 つの基本操作として実装することもあります。

パラメータ:
offset - 子要素のインデックス
length - 削除するテキストの長さ。0 の場合は、何も削除されない
text - 挿入するテキスト。null の場合、テキストは挿入されない
attrs - 挿入されたテキストの属性を示す AttributeSet で、通常は null。空の属性セットとして扱われるが、サブクラスで正確な解釈をする
例外:
BadLocationException - 指定された位置が、ドキュメント内の有効な位置ではない場合
導入されたバージョン:
1.4

insertString

public void insertString(int offs,
                         String str,
                         AttributeSet a)
                  throws BadLocationException
ドキュメントに内容を挿入します。内容の挿入によって、実際の変更が起きるまでは書き込みロックが保持されます。そのあとで、書き込みロックをグラブしているスレッド上のオブザーバに通知が行われます。

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

定義:
インタフェース Document 内の insertString
パラメータ:
offs - 開始オフセット >= 0
str - 挿入する文字列。null や空の文字列の場合は何もしない
a - 挿入されたコンテンツの属性
例外:
BadLocationException - 指定された挿入の位置が、ドキュメント内の有効な位置ではない場合
関連項目:
Document.insertString(int, java.lang.String, javax.swing.text.AttributeSet)

getText

public String getText(int offset,
                      int length)
               throws BadLocationException
ドキュメントからテキストのシーケンスを取得します。

定義:
インタフェース Document 内の getText
パラメータ:
offset - 開始オフセット >= 0
length - 検索対象の文字数 >= 0
戻り値:
テキスト
例外:
BadLocationException - 指定された範囲に、ドキュメント内では無効な位置が含まれる場合
関連項目:
Document.getText(int, int)

getText

public void getText(int offset,
                    int length,
                    Segment txt)
             throws BadLocationException
ドキュメントの指定部分内にあるテキストを取り出します。

txt パラメータの partialReturn プロパティが false の場合、Segment で返されたデータは、要求された長さ全体になり、データの格納方法によってコピーになる場合とならない場合があります。partialReturn プロパティが true の場合は、コピーを作成しなくても返すことが可能なテキストの量だけが返されます。部分的に返すことで、ドキュメントの大部分をスキャンする場合のパフォーマンスが向上します。部分的に返す方法でドキュメント全体にアクセスする例を次に示します。


   int nleft = doc.getDocumentLength();
   Segment text = new Segment();
   int offs = 0;
   text.setPartialReturn(true);   
   while (nleft > 0) {
       doc.getText(offs, nleft, text);
       // do something with text
       nleft -= text.count;
       offs += text.count;
   }
 

定義:
インタフェース Document 内の getText
パラメータ:
offset - 開始オフセット >= 0
length - 検索対象の文字数 >= 0
txt - テキストを取得する Segment オブジェクト
例外:
BadLocationException - 指定された範囲に、ドキュメント内では無効な位置が含まれる場合

createPosition

public Position createPosition(int offs)
                        throws BadLocationException
ドキュメントが変更されたときに、変更を追跡する位置を返します。

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

定義:
インタフェース Document 内の createPosition
パラメータ:
offs - モデル内の位置 >= 0
戻り値:
位置
例外:
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合
関連項目:
Document.createPosition(int)

getStartPosition

public final Position getStartPosition()
ドキュメントの先頭を表す位置を返します。返された位置は、変更を追跡してドキュメントの先頭に常に位置するために利用できます。

定義:
インタフェース Document 内の getStartPosition
戻り値:
位置

getEndPosition

public final Position getEndPosition()
ドキュメントの末尾を表す位置を返します。返された位置は、変更を追跡してドキュメントの末尾に常に位置するために利用できます。

定義:
インタフェース Document 内の getEndPosition
戻り値:
位置

getRootElements

public Element[] getRootElements()
定義されているルート要素をすべて返します。通常、ルート要素は 1 つしかありません。そのため、デフォルトの実装ではデフォルトルート要素が返されます。

定義:
インタフェース Document 内の getRootElements
戻り値:
ルート要素

getDefaultRootElement

public abstract Element getDefaultRootElement()
ルート要素を返します。要素の構造にビューを割り当てる別の機構が提供されない限り、このルート要素がビューのベースになります。

定義:
インタフェース Document 内の getDefaultRootElement
戻り値:
ルート要素
関連項目:
Document.getDefaultRootElement()

getBidiRootElement

public Element getBidiRootElement()
ドキュメントの双方向構造のルート要素を返します。このルート要素の子は、指定された Unicode 双方向構造レベルの文字の並びを示します。


getParagraphElement

public abstract Element getParagraphElement(int pos)
指定された位置を含む段落要素を返します。サブクラスは、何が段落を構成するものであるのかを自身で定義しなければなりません。そのときは、段落を構成するものが、少なくともテキストのチャンクであって、それに対して Unicode の双方向アルゴリズムを実行できる必要があることに注意してください。

パラメータ:
pos - 開始オフセット >= 0
戻り値:
要素

getAttributeContext

protected final AbstractDocument.AttributeContext getAttributeContext()
属性を管理するためのコンテキストを返します。このメソッドは、AttributeSet の情報の圧縮に使われる方法を事実上確立します。

戻り値:
コンテキスト

insertUpdate

protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
                            AttributeSet attr)
テキスト挿入の結果として、ドキュメントの構造を更新します。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。

パラメータ:
chng - 変更の説明
attr - 変更の属性

removeUpdate

protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
テキスト削除の結果として、任意のドキュメントの構造を更新します。このメソッドの呼び出しは、テキストが Content から実際に削除される以前に実行されます。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。

パラメータ:
chng - 変更の説明

postRemoveUpdate

protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
テキスト削除の結果として、任意のドキュメントの構造を更新します。このメソッドの呼び出しは、テキストが Content から実際に削除されたあとに実行されます。この処理は、書き込みロックの中で発生します。このクラスのサブクラスがこのメソッドを再び実装した場合は、スーパークラスにも処理を委譲します。

パラメータ:
chng - 変更の説明

dump

public void dump(PrintStream out)
診断用のダンプを出力します。

パラメータ:
out - 出力ストリーム

getContent

protected final AbstractDocument.Content getContent()
ドキュメントの内容を返します。

戻り値:
コンテンツ

createLeafElement

protected Element createLeafElement(Element parent,
                                    AttributeSet a,
                                    int p0,
                                    int p1)
ドキュメントの葉の要素を作成します。ドキュメントの構造を示すために作成される要素のフックです。この実装が構造と内容を分離したままに保つので、内容の拡大に応じて要素が自動的に成長し、それに既存の要素の分岐 (枝) が続きます。使用される要素の型に柔軟性を与えるように要素を生成する方法については、ドキュメント自体で決定する必要があります。

パラメータ:
parent - 親要素
a - 要素の属性
p0 - 範囲の始点 >= 0
p1 - 範囲の終点 >= p0
戻り値:
新規要素

createBranchElement

protected Element createBranchElement(Element parent,
                                      AttributeSet a)
ドキュメントの枝の要素を作成します。この要素には、他の要素 (複数可) を含めることができます。

パラメータ:
parent - 親要素
a - 属性
戻り値:
要素

getCurrentWriter

protected final Thread getCurrentWriter()
現在の書き込みスレッドがあれば、それを返します。メソッドが既存の変更の一部として呼び出されているかどうか、あるいは、ロックを取得して新しいトランザクションを開始する必要があるかどうかを区別するために使えます。

戻り値:
ドキュメントを変更しているアクティブなスレッド。進行中の変更がない場合は null

writeLock

protected final void writeLock()
ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。ロックの取得は、書き込み、変更の通知、あるいは読み込みが行われている間はできません。また、スレッドは、ドキュメント通知内から追加の writeLock を取得しようとしない限り、複数の writeLock を取得できます。DocumentListener 通知内から writeLock を取得しようとすると、IllegalStateException となります。スレッドごとに複数の writeLock を取得する機能により、サブクラスは writeLock を取得し、多数の操作を実行してから、ロックを開放できます。

writeLock の呼び出しは、writeUnlock の呼び出しと回数が同じでなければなりません。そうでないと、Document がロック状態のままになり、読み込みや書き込みを実行できません。

例外:
IllegalStateException - 不正なロックを試みた場合にスローされる。ドキュメントが適切に実装されていれば、ドキュメントリスナーがドキュメントの変更を試みた場合に限りこの例外が発生する。こうした状況は、Bean イベントモデルに違反している。このイベントモデルでは配信の順序に保証はなく、変更が許可される前に、すべてのリスナーに通知される必要がある

writeUnlock

protected final void writeUnlock()
以前 writeLock 経由で取得された書き込みロックを解除します。ロック数を 1 つ減らしたあと、未処理のロックがない場合は、新しい書き込み側または読み込み側が許可されます。

関連項目:
writeLock()

readLock

public final void readLock()
ロックを取得して、ドキュメントからなんらかの状態の読み込みを開始できるようにします。複数のリーダが同時に存在できます。リスナーに対する変更の通知が完了するまで書き込みは読み込みをブロックします。ドキュメントロックが誤って取得されないように、このメソッドは注意深く使用する必要があります。readLock メソッドと同じ数だけ、readUnlock を呼び出してください。

関連項目:
readUnlock()

readUnlock

public final void readUnlock()
読み込みのロックを解除します。読み込みの 1 つが完了したことを通知します。他にリーダがなければ、書き込みを再開できます。このメソッドの呼び出し回数は、readLock の呼び出し回数と同じにする必要があるので、これを保証するために finally 文の中で使います。次に例を示します。

     readLock();
     try {
         // do something
     } finally {
         readUnlock();
     }
 

関連項目:
readLock()

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。