クラスAbstractDocument
- すべての実装されたインタフェース:
Serializable,Document
- 直系の既知のサブクラス:
DefaultStyledDocument,PlainDocument
このクラスはドキュメントのロック・メカニズムを実装します。 これによって、複数の読取りまたは1つの書込みを扱えるようになり、複数の書込みがあっても、ドキュメントのオブザーバ全員に以前の変更が通知されるまで、ドキュメントに別の変更を加えることができません。 読取りロックの取得および解放には、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に適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明class要素の抽象部分を実装します。static interfaceこのインタフェースは、プラグイン可能な属性圧縮手法をMutableAttributeSetの実装で使用可能にするために使用できます。classほかの要素を含む複合要素を実装します。static interface編集可能な文字のシーケンスを示すインタフェースです。classドキュメントが変更された場合に、ドキュメントの変更を格納します。static classドキュメントのイベントに追加できるElementChangeの実装です。classある種のコンテンツを直接表す要素を実装します。 -
フィールドのサマリー
フィールド修飾子と型フィールド説明protected static final String不正な位置を示すエラー・メッセージです。static final String単方向の実行を示す要素の名前です。static final String内容を示す要素の名前です。static final String要素の名前の指定に使う属性の名前です。protected EventListenerListドキュメントのイベント・リスナーです。static final String段落を示す要素の名前です。static final String行、段落などのセクションを示す要素の名前です。インタフェースjavax.swing.text.Documentで宣言されているフィールド
StreamDescriptionProperty, TitleProperty -
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protected指定されたコンテンツ・ストレージ・メカニズムをラップした、新しいAbstractDocumentを構築します。protected指定されたコンテンツ・ストレージ・メカニズムをラップした、新しいAbstractDocumentを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明voidaddDocumentListener(DocumentListener listener) ドキュメント・リスナーを追加し、変更があったときに通知されるようにします。voidaddUndoableEditListener(UndoableEditListener listener) 任意の変更を通知するアンドゥ・リスナーを追加します。protected ElementcreateBranchElement(Element parent, AttributeSet a) ドキュメントの枝の要素を作成します。この要素には、ほかの要素(複数可)を含めることができます。protected ElementcreateLeafElement(Element parent, AttributeSet a, int p0, int p1) ドキュメントの葉の要素を作成します。createPosition(int offs) ドキュメントが変更されたときに、変更を追跡する位置を返します。voiddump(PrintStream out) 診断用のダンプを出力します。protected voidこのイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。protected voidこのイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。protected voidこのイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。protected voidこのイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。int非同期ロードの優先順位を取得します。protected final AbstractDocument.AttributeContext属性を管理するためのコンテキストを返します。ドキュメントの双方向構造のルート要素を返します。protected final AbstractDocument.Contentドキュメントの内容を取得します。protected final Thread現在の書込みスレッドがあれば、それを取得します。abstract Elementルート要素を返します。要素の構造にビューを割り当てる別のメカニズムが提供されないかぎり、このルート要素がビューのベースになります。挿入または削除のフィルタを行うDocumentFilterを返します。このドキュメントに登録された、すべてのドキュメント・リスナーから成る配列を返します。プロパティのセットの管理をサポートします。final Positionドキュメントの末尾を表す位置を返します。intデータの長さを返します。<T extends EventListener>
T[]getListeners(Class<T> listenerType) このドキュメントにFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。abstract ElementgetParagraphElement(int pos) 指定された位置を保持する段落要素を取得します。final ObjectgetProperty(Object key) プロパティの値を調べるのに便利なメソッドです。Element[]定義されているルート要素をすべて取得します。final Positionドキュメントの先頭を表す位置を返します。getText(int offset, int length) ドキュメントからテキストのシーケンスを取得します。voidドキュメントの指定部分内にあるテキストを取得します。このドキュメントに登録された、すべての取消し可能編集リスナーから成る配列を返します。voidinsertString(int offs, String str, AttributeSet a) ドキュメントに内容を挿入します。protected voidドキュメント構造をテキスト挿入の結果で更新します。protected voidドキュメント構造をテキスト削除の結果で更新します。final voidputProperty(Object key, Object value) プロパティの値を格納するのに便利なメソッドです。final voidreadLock()ロックを取得して、ドキュメントからなんらかの状態の読込みを開始できるようにします。final void読込みのロックを解除します。voidremove(int offs, int len) ドキュメントから内容を削除します。voidremoveDocumentListener(DocumentListener listener) ドキュメント・リスナーを削除します。voidアンドゥ・リスナーを削除します。protected voidドキュメント構造をテキスト削除の結果で更新します。voidモデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。voidreplace(int offset, int length, String text, AttributeSet attrs) offsetからoffset+lengthまでのテキスト領域を削除し、textに置き換えます。voidsetAsynchronousLoadPriority(int p) 非同期ロードの優先順位を設定します。voidsetDocumentFilter(DocumentFilter filter) DocumentFilterを設定します。voidこのドキュメントのドキュメント・プロパティの辞書を置き換えます。protected final voidロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。protected final void以前writeLock経由で取得された書込みロックを解除します。
-
フィールド詳細
-
listenerList
protected EventListenerList listenerListドキュメントのイベント・リスナーです。 -
BAD_LOCATION
-
ParagraphElementName
-
ContentElementName
-
SectionElementName
-
BidiElementName
-
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
public void setDocumentProperties(Dictionary<Object, Object> x) このドキュメントのドキュメント・プロパティの辞書を置き換えます。- パラメータ:
x- 新規辞書- 関連項目:
-
fireInsertUpdate
protected void fireInsertUpdate(DocumentEvent e) このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。 イベント・インスタンスは、fireメソッドに渡されるパラメータを使って簡単に生成されます。- パラメータ:
e- イベント- 関連項目:
-
fireChangedUpdate
protected void fireChangedUpdate(DocumentEvent e) このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。 イベント・インスタンスは、fireメソッドに渡されるパラメータを使って簡単に生成されます。- パラメータ:
e- イベント- 関連項目:
-
fireRemoveUpdate
protected void fireRemoveUpdate(DocumentEvent e) このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。 イベント・インスタンスは、fireメソッドに渡されるパラメータを使って簡単に生成されます。- パラメータ:
e- イベント- 関連項目:
-
fireUndoableEditUpdate
protected void fireUndoableEditUpdate(UndoableEditEvent e) このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。 イベント・インスタンスは、fireメソッドに渡されるパラメータを使って簡単に生成されます。- パラメータ:
e- イベント- 関連項目:
-
getListeners
public <T extends EventListener> T[] getListeners(Class<T> listenerType) このドキュメントにFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。FooListenerは、addFooListenerメソッドを使用して登録されます。FooListener.classなどのクラス・リテラルを使用してlistenerType引数を指定できます。 たとえば、次のコードを使用すると、ドキュメントdをそのドキュメント・リスナーに照会できます。DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));
このようなリスナーがない場合は空の配列を返します。- 型パラメータ:
T- リスナー型- パラメータ:
listenerType- リクエストされたリスナーの型- 戻り値:
- このコンポーネント上で
FooListenerとして登録されたすべてのオブジェクトの配列、またはこのようなリスナーが追加されていない場合は空の配列 - スロー:
ClassCastException-listenerTypeで、java.util.EventListenerを実装するクラスまたはインタフェースが指定されなかった場合- 導入されたバージョン:
- 1.3
- 関連項目:
-
getAsynchronousLoadPriority
public int getAsynchronousLoadPriority()非同期ロードの優先順位を取得します。 0より小さい値の場合、ドキュメントは非同期にはロードされません。- 戻り値:
- 非同期ロードの優先順位。ドキュメントが非同期でロードされない場合は
-1
-
setAsynchronousLoadPriority
public void setAsynchronousLoadPriority(int p) 非同期ロードの優先順位を設定します。- パラメータ:
p- 新しい非同期ロードの優先順位。0より小さい値の場合、ドキュメントは非同期でロードされない
-
setDocumentFilter
public void setDocumentFilter(DocumentFilter filter) DocumentFilterを設定します。DocumentFilterがinsertとremoveに渡され、条件付きでテキストの挿入や削除が可能になります。null値は、フィルタが実行されないことを表します。- パラメータ:
filter- テキストの制約に使用されるDocumentFilter- 導入されたバージョン:
- 1.4
- 関連項目:
-
getDocumentFilter
public DocumentFilter getDocumentFilter()挿入または削除のフィルタを行うDocumentFilterを返します。 戻り値nullは、フィルタが実行されないことを表します。- 戻り値:
- DocumentFilter
- 導入されたバージョン:
- 1.4
- 関連項目:
-
render
public void render(Runnable r) モデルが非同期的な更新をサポートしている場合、並行性に直面してモデルを安全に描画できるようにします。 指定された実行可能ファイルは、その実行中に何の変更もなくモデルを安全に読み取る方法で実行されます。 実行可能ファイルは、それ自身で変更を加えることはできません。この実装は、Runnableオブジェクトを実行している間、読取りロックを取得するためのものです。 複数を同時に実行している場合、アクティブに描画中のオブジェクトがある間は、すべての書込みがブロックされます。 オブジェクトが例外をスローした場合、そのロックは安全に解放されます。 決して終了しないオブジェクトに対する保護はなく、事実上、ドキュメントは自身が存在する間ずっとロックされます。
指定されたRunnableオブジェクトがこの実装でどのような変更を試みても、デッドロックが発生します。 この状況を検知できるようにするために個々の描画スレッドを追跡することはできません。また、サブクラスは、描画スレッドの追跡、およびエラーのスローのオーバーヘッドを発生させる可能性があります。
このメソッドはスレッド・セーフですが、ほとんどのSwingメソッドは違います。 詳細は、Swingでの並行性に関連しているサイトを参照してください。
-
getLength
-
addDocumentListener
public void addDocumentListener(DocumentListener listener) ドキュメント・リスナーを追加し、変更があったときに通知されるようにします。- 定義:
addDocumentListener、インタフェースDocument- パラメータ:
listener- 追加するDocumentListener- 関連項目:
-
removeDocumentListener
public void removeDocumentListener(DocumentListener listener) ドキュメント・リスナーを削除します。- 定義:
removeDocumentListener、インタフェースDocument- パラメータ:
listener- 削除するDocumentListener- 関連項目:
-
getDocumentListeners
public DocumentListener[] getDocumentListeners()このドキュメントに登録された、すべてのドキュメント・リスナーから成る配列を返します。- 戻り値:
- このドキュメントのすべての
DocumentListener。ドキュメント・リスナーが現在登録されていない場合は空の配列 - 導入されたバージョン:
- 1.4
- 関連項目:
-
addUndoableEditListener
public void addUndoableEditListener(UndoableEditListener listener) 任意の変更を通知するアンドゥ・リスナーを追加します。UndoableEditで実行される「元に戻す/再実行」操作は、適切なDocumentEventを発生させて、ビュー(複数の場合もあり)をモデルと同期させます。- 定義:
addUndoableEditListener、インタフェースDocument- パラメータ:
listener- 追加するUndoableEditListener- 関連項目:
-
removeUndoableEditListener
public void removeUndoableEditListener(UndoableEditListener listener) アンドゥ・リスナーを削除します。- 定義:
removeUndoableEditListener、インタフェースDocument- パラメータ:
listener- 削除するUndoableEditListener- 関連項目:
-
getUndoableEditListeners
public UndoableEditListener[] getUndoableEditListeners()このドキュメントに登録された、すべての取消し可能編集リスナーから成る配列を返します。- 戻り値:
- このドキュメントのすべての
UndoableEditListener。取消し可能編集リスナーが現在登録されていない場合は空の配列 - 導入されたバージョン:
- 1.4
- 関連項目:
-
getProperty
プロパティの値を調べるのに便利なメソッドです。 これは次と同等です。getDocumentProperties().get(key);
- 定義:
getProperty、インタフェースDocument- パラメータ:
key-null以外のプロパティ・キー- 戻り値:
- このプロパティの値または
null - 関連項目:
-
putProperty
プロパティの値を格納するのに便利なメソッドです。 これは次と同等です。getDocumentProperties().put(key, value);
valueがnullの場合、このメソッドはプロパティを削除します。- 定義:
putProperty、インタフェースDocument- パラメータ:
key-null以外のキーvalue- プロパティ値- 関連項目:
-
remove
public void remove(int offs, int len) throws BadLocationException ドキュメントから内容を削除します。 内容の削除によって、実際の変更が起きるまでの書込みロックが発生します。 オブザーバは、このメソッドを呼び出したスレッド上で変更の通知を受けます。このメソッドはスレッド・セーフですが、ほとんどのSwingメソッドは違います。 詳細は、Swingでの並行性に関連しているサイトを参照してください。
- 定義:
remove、インタフェースDocument- パラメータ:
offs- 開始オフセット>= 0len- 削除対象の文字数>= 0- スロー:
BadLocationException- 指定された削除位置がドキュメント内の有効な位置でない場合- 関連項目:
-
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メソッドは違います。 詳細は、Swingでの並行性に関連しているサイトを参照してください。
- 定義:
insertString、インタフェースDocument- パラメータ:
offs- 開始オフセット>= 0str- 挿入する文字列。nullや空の文字列の場合は何もしないa- 挿入されたコンテンツの属性- スロー:
BadLocationException- 指定された挿入位置がドキュメント内の有効な位置でない場合- 関連項目:
-
getText
public String getText(int offset, int length) throws BadLocationException ドキュメントからテキストのシーケンスを取得します。- 定義:
getText、インタフェースDocument- パラメータ:
offset- 開始オフセット>= 0length- 取得対象の文字数>= 0- 戻り値:
- テキスト
- スロー:
BadLocationException- 指定された範囲に、ドキュメント内の無効な位置が含まれる場合- 関連項目:
-
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; }- 定義:
getText、インタフェースDocument- パラメータ:
offset- 開始オフセット>= 0length- 取得対象の文字数>= 0txt- テキストを取得するSegmentオブジェクト- スロー:
BadLocationException- 指定された範囲に、ドキュメント内の無効な位置が含まれる場合
-
createPosition
public Position createPosition(int offs) throws BadLocationException ドキュメントが変更されたときに、変更を追跡する位置を返します。このメソッドはスレッド・セーフですが、ほとんどのSwingメソッドは違います。 詳細は、Swingでの並行性に関連しているサイトを参照してください。
- 定義:
createPosition、インタフェースDocument- パラメータ:
offs- モデル内の位置>= 0- 戻り値:
- 位置
- スロー:
BadLocationException- 指定された位置が、関連するドキュメント内の有効な位置を示さない場合- 関連項目:
-
getStartPosition
public final Position getStartPosition()ドキュメントの先頭を表す位置を返します。 返された位置は、変更を追跡してドキュメントの先頭に常に位置するために利用できます。- 定義:
getStartPosition、インタフェースDocument- 戻り値:
- 位置
-
getEndPosition
public final Position getEndPosition()ドキュメントの末尾を表す位置を返します。 返された位置は、変更を追跡してドキュメントの末尾に常に位置するために利用できます。- 定義:
getEndPosition、インタフェースDocument- 戻り値:
- 位置
-
getRootElements
public Element[] getRootElements()定義されているルート要素をすべて取得します。 通常、ルート要素は1つしかありません。そのため、デフォルトの実装ではデフォルト・ルート要素が返されます。- 定義:
getRootElements、インタフェースDocument- 戻り値:
- ルート要素
-
getDefaultRootElement
public abstract Element getDefaultRootElement()ルート要素を返します。要素の構造にビューを割り当てる別のメカニズムが提供されないかぎり、このルート要素がビューのベースになります。- 定義:
getDefaultRootElement、インタフェースDocument- 戻り値:
- ルート要素
- 関連項目:
-
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
-
getContent
-
createLeafElement
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1) ドキュメントの葉の要素を作成します。 ドキュメントの構造を示すために作成される要素のフックです。 この実装が構造と内容を分離したままに保つので、内容の拡大に応じて要素が自動的に成長し、それに既存の要素の分岐(枝)が続きます。 使用される要素の型に柔軟性を与えるように要素を生成する方法については、ドキュメント自体で決定する必要があります。- パラメータ:
parent- 親要素a- 要素の属性p0- 範囲の始点>= 0p1- 範囲の終点>= 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つ減らした後、未処理のロックがない場合は、新しい書込み側または読取り側が許可されます。- 関連項目:
-
readLock
public final void readLock()ロックを取得して、ドキュメントからなんらかの状態の読込みを開始できるようにします。 複数のリーダーが同時に存在できます。 リスナーに対する変更の通知が完了するまで書込みは読込みをブロックします。 ドキュメント・ロックが誤って取得されないように、このメソッドは注意深く使用する必要があります。 readLockメソッドと同じ数だけ、readUnlockを呼び出してください。- 関連項目:
-
readUnlock
public final void readUnlock()読込みのロックを解除します。 読込みの1つが完了したことを通知します。 ほかにリーダーがなければ、書込みを再開できます。 このメソッドの呼出し回数は、readLockの呼出し回数と同じにする必要があるので、これを保証するためにfinally文の中で使います。 次に例を示します。readLock(); try { // do something } finally { readUnlock(); }- 関連項目:
-