|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.swing.text.AbstractDocument
ドキュメントインタフェースの実装であり、各種のドキュメントを実装するときのベースになります。このレベルではポリシーがごくわずかなので、それに応じて使用が難しくなります。
このクラスは、ドキュメントのロック機構を実装します。この機構によって、複数の読み込みまたはひとつの書き込みを扱えるようになり、複数の書き込みがあっても、ドキュメントのオブザーバ全員に以前の変更が通知されるまで、ドキュメントに別の変更を加えることができません。読み込みロックの取得および解放には、render
メソッドを使います。書き込みロックは、ドキュメントを変更するメソッドによって取得され、そのメソッド呼び出しの間は保持されます。通知は、ドキュメントを変更するスレッド上で行われます。このスレッドは、通知の間はドキュメントへの完全な読み込みアクセス権を持っています。一方で、その他の書き込み側は、通知が完了するまではアクセスを許されません。通知は Beans イベント通知であり、すべてのリスナーが通知を受け取るまでは他の変更を許可しません。
このクラスからサブクラス化された任意のモデルで、BasicTextUI から派生した Look & Feel の実装を持つテキストコンポーネントと関連して使用されるものは、安全に非同期に更新されます。これは、ドキュメントのタイプが AbstractDocument
の場合には、View 階層へのすべてのアクセスが BasicTextUI によって直列化されるからです。ロック機構では、独立したスレッドの View 階層へのアクセスは必ず DocumentListener メソッドを介して行われ、また、ある 1 つの時点にはアクティブなスレッドは 1 つしか存在しないと見なします。
同期のサポートが必要な場合は、さらに次の前提条件があります。任意の DocumentListener および UndoListener の実装に対するコードパスがスレッドに対して安全であること、また、デッドロックを避ける場合には、コンポーネントのロックにアクセスしないこと、という条件です。JComponent の repaint
メソッドおよび revalidate
メソッドは安全です。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。
内部クラスの概要 | |
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
行、段落などのセクションを示す要素の名前です。 |
コンストラクタの概要 | |
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()
ルート要素を返します。 |
Dictionary |
getDocumentProperties()
プロパティのセットの管理をサポートします。 |
Position |
getEndPosition()
ドキュメントの終了位置を返します。 |
int |
getLength()
データの長さを返します。 |
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)
ドキュメントからテキストを取得しますが、コピーは作成しません。 |
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 |
setAsynchronousLoadPriority(int p)
非同期ロードの優先順位を設定します。 |
void |
setDocumentProperties(Dictionary x)
このドキュメントのドキュメントプロパティの辞書を置き換えます。 |
protected void |
writeLock()
ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。 |
protected void |
writeUnlock()
書き込み操作が終了したときに、保持されていた書き込みロックを解放します。 |
クラス java.lang.Object から継承したメソッド |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
フィールドの詳細 |
protected EventListenerList listenerList
protected static final String BAD_LOCATION
public static final String ParagraphElementName
public static final String ContentElementName
public static final String SectionElementName
public static final String BidiElementName
public static final String ElementNameAttribute
コンストラクタの詳細 |
protected AbstractDocument(AbstractDocument.Content data)
data
- データprotected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
data
- データcontext
- 属性のコンテキストメソッドの詳細 |
public Dictionary getDocumentProperties()
setDocumentProperties(java.util.Dictionary)
public void setDocumentProperties(Dictionary x)
x
- 新しい辞書getDocumentProperties()
protected void fireInsertUpdate(DocumentEvent e)
e
- イベントEventListenerList
protected void fireChangedUpdate(DocumentEvent e)
e
- イベントEventListenerList
protected void fireRemoveUpdate(DocumentEvent e)
e
- イベントEventListenerList
protected void fireUndoableEditUpdate(UndoableEditEvent e)
e
- イベントEventListenerList
public int getAsynchronousLoadPriority()
public void setAsynchronousLoadPriority(int p)
public void render(Runnable r)
この実装は、実行している間、読み込みロックを取得するためのものです。複数を同時に実行している場合、アクティブに描画中のオブジェクトがある間は、すべての書き込みがブロックされます。オブジェクトが例外をスローした場合、そのロックは安全に解放されます。決して終了しないオブジェクトに対する保護はなく、事実上、ドキュメントは自身が存在する間ずっとロックされます。
指定されたオブジェクトがどのような変更を試みても、デッドロックが発生します。この状況を検知できるようにするために個々の描画スレッドを追跡することはできません。また、サブクラスは、描画スレッドの追跡、およびエラーのスローのオーバーヘッドを発生させる可能性があります。
このメソッドは、Swing のほとんどのメソッドとは異なり、スレッドに対して安全です。詳細は、「Threads and Swing」 を参照してください。
r
- 実行する描画オブジェクトpublic int getLength()
Document.getLength()
public void addDocumentListener(DocumentListener listener)
listener
- リスナーDocument.addDocumentListener(javax.swing.event.DocumentListener)
public void removeDocumentListener(DocumentListener listener)
listener
- リスナーDocument.removeDocumentListener(javax.swing.event.DocumentListener)
public void addUndoableEditListener(UndoableEditListener listener)
listener
- リスナーDocument.addUndoableEditListener(javax.swing.event.UndoableEditListener)
public void removeUndoableEditListener(UndoableEditListener listener)
listener
- リスナーDocument.removeDocumentListener(javax.swing.event.DocumentListener)
public final Object getProperty(Object key)
getDocumentProperties().get(key);と同等です。
key
- null 以外のプロパティキーgetDocumentProperties()
public final void putProperty(Object key, Object value)
getDocumentProperties().put(key, value);と同等です。値が null の場合、このメソッドはプロパティを削除します。
key
- null 以外のキーvalue
- 値getDocumentProperties()
public void remove(int offs, int len) throws BadLocationException
このメソッドは、Swing のほとんどのメソッドとは異なり、スレッドに対して安全です。詳細は、「Threads and Swing」 を参照してください。
offs
- 開始オフセット >= 0len
- 削除する文字の数 >= 0Document.remove(int, int)
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
このメソッドは、Swing のほとんどのメソッドとは異なり、スレッドに対して安全です。詳細は、「Threads and Swing」 を参照してください。
offs
- 開始オフセット >= 0str
- 挿入する文字列。 null や空の文字列の場合は何もしないa
- 挿入される内容の属性Document.insertString(int, java.lang.String, javax.swing.text.AttributeSet)
public String getText(int offset, int length) throws BadLocationException
offset
- 開始オフセット >= 0length
- 取得する文字の数 >= 0Document.getText(int, int)
public void getText(int offset, int length, Segment txt) throws BadLocationException
Segment
に返された文字配列は、変更してはなりません。ドキュメントの文字に対するこうしたアクセス方法は、描画をより効率的にするために提供されています。呼び出し側は、返された文字配列の寿命について想定してはなりません。文字配列を描画以外に使う必要がある場合は、その文字配列をコピーします。offset
- 開始オフセット >= 0length
- 取得する文字の数 >= 0txt
- テキストを取得する Segment オブジェクトpublic Position createPosition(int offs) throws BadLocationException
このメソッドは、Swing のほとんどのメソッドとは異なり、スレッドに対して安全です。詳細は、「Threads and Swing」 を参照してください。
offs
- モデル内の位置 >= 0Document.createPosition(int)
public final Position getStartPosition()
public final Position getEndPosition()
public Element[] getRootElements()
public abstract Element getDefaultRootElement()
Document.getDefaultRootElement()
public Element getBidiRootElement()
public abstract Element getParagraphElement(int pos)
pos
- 開始オフセット >= 0protected final AbstractDocument.AttributeContext getAttributeContext()
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
chng
- 変更の説明attr
- 変更の属性protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
chng
- 変更の説明protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
chng
- 変更の説明public void dump(PrintStream out)
out
- 出力ストリームprotected final AbstractDocument.Content getContent()
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
parent
- 親要素a
- 要素の属性p0
- 範囲の開始 >= 0p1
- 範囲の終了 >= p0protected Element createBranchElement(Element parent, AttributeSet a)
parent
- 親要素a
- 属性protected final Thread getCurrentWriter()
protected final void writeLock()
protected final void writeUnlock()
public final void readLock()
readUnlock
を呼び出してください。readUnlock()
public final void readUnlock()
try {
readLock();
// do something
} finally {
readUnlock();
}
readLock()
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |