Java プラットフォーム 1.2

javax.swing.text
クラス AbstractDocument

java.lang.Object
  |
  +--javax.swing.text.AbstractDocument
直接の既知のサブクラス:
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 メソッドは安全です。

警告: このクラスの直列化されたオブジェクトは、今後の 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
 

フィールドの詳細

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 getDocumentProperties()
プロパティのセットの管理をサポートします。呼び出し側は、ドキュメントプロパティの辞書を使用して、ドキュメント全体に関するプロパティの注釈を付加できます。
戻り値:
null 以外の辞書
関連項目:
setDocumentProperties(java.util.Dictionary)

setDocumentProperties

public void setDocumentProperties(Dictionary 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

getAsynchronousLoadPriority

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

setAsynchronousLoadPriority

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

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 - リスナー
関連項目:
Document.addDocumentListener(javax.swing.event.DocumentListener)

removeDocumentListener

public void removeDocumentListener(DocumentListener listener)
ドキュメントリスナーを削除します。
定義:
インタフェース Document 内の removeDocumentListener
パラメータ:
listener - リスナー
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener listener)
任意の変更を通知するアンドゥリスナーを追加します。UndoableEdit で実行される「元に戻す/再実行」操作は、適切な DocumetnEvent を発生させて、ビュー (複数の場合もあり) をモデルと同期させます。
定義:
インタフェース Document 内の addUndoableEditListener
パラメータ:
listener - リスナー
関連項目:
Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener listener)
アンドゥリスナーを削除します。
定義:
インタフェース Document 内の removeUndoableEditListener
パラメータ:
listener - リスナー
関連項目:
Document.removeDocumentListener(javax.swing.event.DocumentListener)

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);
 
と同等です。値が null の場合、このメソッドはプロパティを削除します。
定義:
インタフェース 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)

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
ドキュメントからテキストを取得しますが、コピーは作成しません。指定された Segment に返された文字配列は、変更してはなりません。ドキュメントの文字に対するこうしたアクセス方法は、描画をより効率的にするために提供されています。呼び出し側は、返された文字配列の寿命について想定してはなりません。文字配列を描画以外に使う必要がある場合は、その文字配列をコピーします。
定義:
インタフェース 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()
ロックを取得して、ロックが保護しているドキュメントの変更を開始できるようにします。ロックを取得するには、書き込み、変更の通知、あるいは読み込みが進行中であってはなりません。
例外:
IllegalStateException - 不正なロックを試みた場合。ドキュメントが適切に実装されていれば、ドキュメントリスナーがドキュメントの変更を試みた場合にのみこの例外が発生する。こうした状況は、Bean イベントモデルに違反している。このイベントモデルでは配信の順序の保証はなく、変更が許可される前に、すべてのリスナーに通知する必要がある

writeUnlock

protected final void writeUnlock()
書き込み操作が終了したときに、保持されていた書き込みロックを解放します。新しい書き込み側、あるいは読み込み側がロックを取得できるようになります。

readLock

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

readUnlock

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

try {
readLock();
// do something
} finally {
readUnlock();
}
 
関連項目:
readLock()

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.