public abstract class View extends Object implements SwingConstants
View クラスは、テキストパッケージの非常に重要な部分です。名前が示すとおり、テキストモデルのビュー、またはテキストモデルの一部を表します。名前が示すように、テキストモデルのビュー、あるいはテキストモデルの一部分を表します。このクラスはテキストコンポーネントの外観を扱います。
デフォルトでは、ビューは軽量です。ビューには、ビューが状態を保持しないで多くのものを取得することができる親ビューへの参照と、モデル (Element) の一部分への参照が含まれています。ビューは、典型的なだけで便利なマッピングである、モデルの要素を正確に表す必要はありません。バージョン 1.1 および 1.2 の両方で機能する API は、移行によって生じる問題を最小化するのに便利です。ビューがバラバラにされた場合の通常のフォーマットの結果です。モデルが変更され、ビューがそのモデルを反映するように変更されなければならないとき、要素との実質的な関係の利便性を、ビューを生成するファクトリの構築によって簡単にしたり、ビュー各部分の追跡を継続することで簡単にします。つまり、単純なビューは Element を直接表しますが、複雑なビューは違います。
ビューには次の機能があります。
組み合わされた Component のビューには、doLayout や setSize と同様の setSize メソッドがあります。Component のビューには、1 つの軸と、変更が識別できることを要求する子だけを無効にできる場合を除き、invalidate と同様の preferenceChanged メソッドがあります。
View はサイズを示します。最小スパン、推奨スパン、最大スパンの 3 つの値で表示されます。ビューのレイアウトは各軸に依存しない方法で行われます。View 実装を正しく機能させるには、最小スパン <= 推奨スパン、または推奨スパン <= 最大スパンとなります。
レイアウトに関するメソッドの最小設定は次のとおりです。
何回も呼び出されるためには setSize メソッドを作成します (サイズが変更されない場合でも呼び出されることがあります)。setSize メソッドは通常、最新のレイアウトを必要とする操作を View 上で試みる前に、View のレイアウトが完了するように呼び出されます。ビューのサイズは必ず、そのビューで指定されたスパンの最小スパンから最大スパンの範囲内の値に設定されます。さらに、ビューで親に必要なレイアウト値に変更した場合、このビューは必ずその親の preferenceChanged メソッドを呼び出し親に引き受けを要求します。preferenceChanged が送られるまで、その親 View は変更を認識するように要求されていません。このため、親 View の実装は必要に応じて子の要求をキャッシュできます。呼び出し順序は次のようになります。
ビューが子供を持つ場合、正確な呼び出し順序は親ビューのレイアウト機能にかかっています。どの子に何を提供するのか、または子を 1 度に 1 つ繰り返し更新するのかを指定する前に、ビューは子の推奨設定を収集することがあります。
ペイントメソッドで描画しますが、コンポーネントペイントメソッドとよく似ています。ビューは、かなり大きなツリーを生成する可能性があると考えられます。View の描画に対して次のセマンティクスが用意されています。
getContainer メソッドで返された Component などの収容側 Component と同じ。すなわち、親が明示的に座標体系を変更していない限り、子ビューは親ビューと同じ座標体系に存在する。自分を再描画するようにスケジュールするために、ビューは収容側 Component の再描画を呼び出すことができる。
Graphics オブジェクトはどんな方法でも初期化されない。ビューが必要な設定をしなければならない。
View は透明。ビューがその割り当て全体を描画する場合もあるが、通常は描画しない。View 実装のツリーを下位へたどってレンダリングを実行する。各 View はその子のレンダリングを扱う。この動作はスレッドに対する安全性に依存している。ビューの実装にスレッドに対する安全性を考慮する必要がない場合は、同時に使用できるほかのビューの実装が、スレッドに対する安全性を保証するツリートラバーサルに依存する。
レンダリングのためのメソッドは次のとおりです。
ビューオブジェクトはファクトリから生成されており、必ずしも特定のパターンに依存することはないので、モデルの空間表現を適切に位置づける変換を実行できなければいけません。これは次のメソッドが実行します。
変換しようとする前にレイアウトを有効にする必要があります。この変換は有効ではないため、変更が DocumentEvent 経由でモデルから送られる間は変換しないでください。
ビュー全体がいくつもの分割部分で表現されていると (ビューを変更し、最小限の新規コードの書き込みをする場合、それが最適な状態ですが)、莫大な数の DocumentListener を保持するのは不可能です。各ビューがモデルに待機するとすれば、実際にはほとんどのビューは指定された時間に送られる変更に関われません。モデルにはビューに関する情報がないので、変更情報の伝送をフィルタする方法がありません。代わりに、ビュー階層自身が変更情報の送信を行います。ビュー階層のどのレベルでも、詳細な変更情報を効率よく分配するために、ビューの子に関する情報は十分にあります。したがって、変更はビュー階層のルートから送られます。これは次のメソッドが実行します。
| 修飾子と型 | フィールドと説明 |
|---|---|
static int |
BadBreakWeight
フォーマット目的とするには不完全な分割の機会であるビューを示すウェイトです。
|
static int |
ExcellentBreakWeight
分割をサポートしているビューを示すウェイトで、分割するのに適した位置であることを表わしています。
|
static int |
ForcedBreakWeight
分割をサポートしているビューを示すウェイトで、子を分割することで子をフォーマットするビューに配置されている場合に、ビューを正しく表わすには分割しなければいけません。
|
static int |
GoodBreakWeight
分割をサポートしているビューを示すウェイトですが、もっと良い機会が存在する可能性があります。
|
static int |
X_AXIS
フォーマット/分割処理の軸です。
|
static int |
Y_AXIS
フォーマット/分割処理の軸です。
|
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST| 修飾子と型 | メソッドと説明 |
|---|---|
void |
append(View v)
1 つの子ビューを追加します。
|
View |
breakView(int axis, int offset, float pos, float len)
指定された軸でこのビューの分割を試みます。
|
void |
changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
このビューが扱う位置で属性が変更されたことをドキュメントから通知します。
|
View |
createFragment(int p0, int p1)
要素の一部分を表すビューを作成します。
|
protected void |
forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
指定された
DocumentEvent を、モデルへの変更について通知する必要のある子ビューに転送します。 |
protected void |
forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
指定された子ビューに
DocumentEvent を転送します。 |
float |
getAlignment(int axis)
軸に沿ったこのビューの望ましいレイアウトを決定します。
|
AttributeSet |
getAttributes()
描画するときに使用する属性を取得します。
|
int |
getBreakWeight(int axis, float pos, float len)
このビューで分割のウェイトがどのくらい適切かを示します。
|
Shape |
getChildAllocation(int index, Shape a)
指定された子ビューの割り当てを取得します。
|
Container |
getContainer()
ビューを収容するコンテナを取得します。
|
Document |
getDocument()
ビューに関連したモデルを取り出します。
|
Element |
getElement()
このビューがマッピングされる対象の構造部分を取り出します。
|
int |
getEndOffset()
このビューが扱うモデルの一部を取り出します。
|
Graphics |
getGraphics()
レンダリングのための
Graphics を取得します。 |
float |
getMaximumSpan(int axis)
このビューの最大スパンを軸に沿って指定します。
|
float |
getMinimumSpan(int axis)
このビューの最小スパンを軸に沿って指定します。
|
int |
getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。
|
View |
getParent()
ビューの親を返します。
|
abstract float |
getPreferredSpan(int axis)
このビューに適切なスパンを軸に沿って指定します。
|
int |
getResizeWeight(int axis)
指定された軸に沿ってビューのサイズを変更できるかどうかを指定します。
|
int |
getStartOffset()
このビューが扱うモデルの一部を取り出します。
|
String |
getToolTipText(float x, float y, Shape allocation)
指定された位置にあるツールヒントのテキストを返します。
|
View |
getView(int n)
n 番目の子ビューを取得します。
|
int |
getViewCount()
このビュー内のビューの数を返します。
|
ViewFactory |
getViewFactory()
ビュー階層を供給している
ViewFactory の実装を取り出します。 |
int |
getViewIndex(float x, float y, Shape allocation)
ビュー内の指定された位置を表す子ビューインデックスを返します。
|
int |
getViewIndex(int pos, Position.Bias b)
モデル内の指定された位置を表す子ビューのインデックスを返します。
|
void |
insert(int offs, View v)
1 つの子ビューを挿入します。
|
void |
insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
このビューが扱う位置でドキュメントに何かが挿入されたことを通知します。
|
boolean |
isVisible()
ビューが可視かどうかを示す boolean 型の値を返します。
|
Shape |
modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
指定した範囲について、ドキュメントモデル座標空間からビュー座標空間へのマッピングを提供します。
|
Shape |
modelToView(int pos, Shape a)
非推奨。
|
abstract Shape |
modelToView(int pos, Shape a, Position.Bias b)
指定した文字について、ドキュメントモデル座標空間からビュー座標空間へのマッピングを提供します。
|
abstract void |
paint(Graphics g, Shape allocation)
指定されたレンダリング表面およびその表面上の領域を使ってレンダリングします。
|
void |
preferenceChanged(View child, boolean width, boolean height)
子ビューは親でこのメソッドを呼び出し、設定が変更されたこと、および再度レイアウトが考慮されなければならないことを示すことができます。
|
void |
remove(int i)
指定された位置にある子を 1 つ削除します。
|
void |
removeAll()
すべての子を削除します。
|
void |
removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
このビューが扱うドキュメント内の位置から何かが削除されたということを通知します。
|
void |
replace(int offset, int length, View[] views)
子ビューを置換します。
|
void |
setParent(View parent)
このビューの親ビューを確立します。
|
void |
setSize(float width, float height)
ビューのサイズを設定します。
|
protected boolean |
updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
モデルが変更されたという通知を受け取ると、子ビューを更新します。このビューが扱う要素の変更記録があります。
|
protected void |
updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
モデルから変更の通知を受け取った場合に、レイアウトを更新します。
|
int |
viewToModel(float x, float y, Shape a)
非推奨。
|
abstract int |
viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。
|
public static final int BadBreakWeight
public static final int GoodBreakWeight
public static final int ExcellentBreakWeight
public static final int ForcedBreakWeight
public static final int X_AXIS
public static final int Y_AXIS
public View(Element elem)
View オブジェクトを作成します。elem - 表現対象の Elementpublic View getParent()
nullpublic boolean isVisible()
public abstract float getPreferredSpan(int axis)
axis - View.X_AXIS または View.Y_AXISgetPreferredSpan(int)public float getMinimumSpan(int axis)
axis - View.X_AXIS または View.Y_AXISgetPreferredSpan(int)public float getMaximumSpan(int axis)
axis - View.X_AXIS または View.Y_AXISgetPreferredSpan(int)public void preferenceChanged(View child, boolean width, boolean height)
revalidate を呼び出します。child - 子ビューwidth - 幅の設定が変更されている場合は trueheight - 高さの設定が変更されている場合は trueJComponent.revalidate()public float getAlignment(int axis)
axis - View.X_AXIS または View.Y_AXISpublic abstract void paint(Graphics g, Shape allocation)
g - 使用する描画表面allocation - 描画するために割り当てられた領域public void setParent(View parent)
super.setParent() を呼び出す必要があります。parent - 新しい親。ビューが親から削除される場合は nullpublic int getViewCount()
getViewCount()public View getView(int n)
null を返します。n - 取得するビューの番号 >= 0 && < getViewCount()public void removeAll()
replace の簡易呼び出しです。public void remove(int i)
replace の簡易呼び出しです。public void insert(int offs,
View v)
replace の簡易呼び出しです。offs - ビューを挿入する位置のオフセット >= 0v - ビューreplace(int, int, javax.swing.text.View[])public void append(View v)
replace の簡易呼び出しです。v - ビューreplace(int, int, javax.swing.text.View[])public void replace(int offset,
int length,
View[] views)
null に設定された親を持ち、削除されるビューの内部を参照しているので、ガベージコレクトが可能です。デフォルトではビューに子がないので、実装しても何も行われません。offset - 新規ビューを挿入するための、子ビューの開始インデックス。この値は 0 以上で、getViewCount 以下length - 削除する既存の子ビューの数。この値は 0 以上で、(getViewCount() - offset) 以下。views - 追加する子ビュー。追加される子がない場合は、null も可 (削除に便利)。public int getViewIndex(int pos,
Position.Bias b)
pos - 位置 >= 0public Shape getChildAllocation(int index, Shape a)
null を返します。index - 子のインデックス。0 以上で getViewCount() より小さい値a - このビューに対する割り当てpublic int getNextVisualPositionFrom(int pos,
Position.Bias b,
Shape a,
int direction,
Position.Bias[] biasRet)
throws BadLocationException
pos - 変換対象の位置 >= 0a - 割り当てられた描画領域direction - 現在位置からの方向。これは、キーボードに通常存在する矢印キーと見なすことができます。これは、次の値のいずれかになる:
BadLocationExceptionIllegalArgumentException - direction が前述の正当な値のどれでもない場合public abstract Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
pos - 望ましい文字の位置 (>= 0)a - ビューの領域。要求された文字が含まれるb - 位置が 2 つのビューの境界である場合に、オフセットによって表される直前の文字または次の文字へのバイアス。b の値は次のどれかになる。
Position.Bias.Forward
Position.Bias.Backward
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合IllegalArgumentException - b が上記の正当な Position.Bias 値のどれでもない場合viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])public Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) throws BadLocationException
p0 - 最初の文字の位置 >= 0b0 - 位置が 2 つのビューの境界である場合に、オフセットによって表される直前の文字または次の文字への最初の文字のバイアス。b0 の値は次のどれかになる。
Position.Bias.Forward
Position.Bias.Backward
p1 - 最後の文字の位置 (>= 0)b1 - 2 番目の文字位置におけるバイアス。上記の適正な値のどれかa - ビューの領域。要求された範囲が含まれるBadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を示さない場合IllegalArgumentException - b0 または b1 が上記の正当な Position.Bias 値のどれでもない場合viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])public abstract int viewToModel(float x,
float y,
Shape a,
Position.Bias[] biasReturn)
biasReturn 引数は、指定された点がモデル内の次の文字と近いのか、あるいはモデル内の前の文字と近いのかを示します。x - X 座標 >= 0y - Y 座標 >= 0a - 割り当てられた描画領域biasReturn 引数は、指定された点がモデル内の次の文字と近いのか、それとも直前の文字と近いのかを示す。public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
updateChildren が呼び出される。このビューが、子の要素を示す子ビューを持つ場合、子ビューが正しくモデルを表すように、このメソッドは必要なことをすべて実行する。
forwardUpdate が呼び出される。
updateLayout が呼び出される。
e - 関連するドキュメントからの変更情報a - ビューの現在の割り当てf - ビューが子を持つ場合に再構築に使用するファクトリinsertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)public void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
updateChildren が呼び出される。このビューが、子の要素を示す子ビューを持つ場合、子ビューが正しくモデルを表すように、このメソッドは必要なことをすべて実行する。
forwardUpdate が呼び出される。
updateLayout が呼び出される。
e - 関連するドキュメントからの変更情報a - ビューの現在の割り当てf - ビューが子を持つ場合に再構築に使用するファクトリremoveUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
updateChildren が呼び出される。このビューが、子の要素を示す子ビューを持つ場合、子ビューが正しくモデルを表すように、このメソッドは必要なことをすべて実行する。
forwardUpdate が呼び出される。
updateLayout が呼び出される。
e - 関連するドキュメントからの変更情報a - ビューの現在の割り当てf - ビューが子を持つ場合に再構築に使用するファクトリchangedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)public Document getDocument()
nullgetDocument()public int getStartOffset()
getStartOffset()public int getEndOffset()
getEndOffset()public Element getElement()
getElement()public Graphics getGraphics()
Graphics を取得します。フォント文字を指定するのに使用されますが、出力ビューの場合はコンポーネントビューの場合と異なります。Graphics オブジェクトpublic AttributeSet getAttributes()
AttributeSet を介してそれらに常にアクセスしなければいけません。public View breakView(int axis, int offset, float pos, float len)
このメソッドはビュー自体を返すために実装され、それは分割できないデフォルトの動作を表します。ビューが分割をサポートする場合、返されるビューの開始オフセットは指定されたオフセットでなければならず、終了オフセットは分割されるビューの終了オフセット以下であるべきです。
axis - View.X_AXIS または View.Y_AXISoffset - 分割されたフラグメントが占めるドキュメントモデル内の位置。0 以上。これは返されるフラグメントの開始オフセットになるpos - 分割されたビューが占める軸に沿った位置。0 以上。これはタブの計算などで便利な場合があるlen - 分割が必要な軸に沿った距離 (0 以上)ParagraphViewpublic View createFragment(int p0, int p1)
p0 - 開始オフセット。0 以上。要素の開始オフセットに等しいか、それより大きい値で、要素の終了オフセットより小さい値にする。p1 - 終了オフセット。p0 より大きい。要素の開始オフセットより大きく、要素の終了オフセットに等しいか、それより小さい値にする。LabelViewpublic int getBreakWeight(int axis,
float pos,
float len)
breakView を呼び出すもっとも適切なビューを判断するために使用できます。たとえば、余白を含むテキストを表すビューは、余白を含まないビューよりも適切です。ウェイトが高いほど、分割にはより適切です。値が BadBreakWeight 以下の場合は、分割対象とはなりません。値が ForcedBreakWeight 以上の場合は、分割されます。
長さがビューの長さより長い場合 (ビュー全体がフラグメントを表す) を除いて BadBreakWeight を返すデフォルトの動作を提供するために実装されます。ビューが分割動作をサポートするように記述されていないかぎり、ビューを分割しようとするのは適切ではありません。分割をサポートするビューには LabelView などがあります。分割ウェイトを使用するビューには ParagraphView などがあります。
axis - View.X_AXIS または View.Y_AXISpos - 分割されたビューの開始の可能性のある位置。0 以上。これはタブ位置の計算に便利な場合があるlen - 分割が必要な pos からの相対的な長さを指定する。0 以上LabelView, ParagraphView, BadBreakWeight, GoodBreakWeight, ExcellentBreakWeight, ForcedBreakWeightpublic int getResizeWeight(int axis)
axis - View.X_AXIS または View.Y_AXISpublic void setSize(float width,
float height)
width - 幅 >= 0height - 高さ >= 0public Container getContainer()
nullpublic ViewFactory getViewFactory()
ViewFactory の実装を取り出します。ビューには通常、もっともファクトリを必要とするときにモデルから更新するための引数として渡されますが、このメソッドはそれ以外のときに実装を提供するために機能します。nullpublic String getToolTipText(float x, float y, Shape allocation)
JTextComponent.getToolTipText(java.awt.event.MouseEvent)public int getViewIndex(float x,
float y,
Shape allocation)
x, y) を含む境界を持つ最初の子を返します。x - x 座標y - y 座標allocation - ビューの現在の割り当て。protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
ViewFactory は、ElementChange 内の追加として指定された、その ElementChange 内の特定のインデックスから始まる、各要素の子ビューを作成するために使用されます。指定された削除される要素を表す子ビューの数は削除されます。ec - このビューが扱う要素への変更情報。このメソッドが呼び出される場合は null にはならないe - 関連するドキュメントからの変更情報f - 子ビューの構築に使用するファクトリinsertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
DocumentEvent を、モデルへの変更について通知する必要のある子ビューに転送します。このビューが扱う要素に変更があった場合、転送のときに考慮します (新しい子ビューが通知を受けないなど)。ec - このビューが扱う要素への変更。変更がなかった場合、null になる可能性がある。e - 関連するドキュメントからの変更情報a - ビューの現在の割り当てf - ビューが子を持つ場合に再構築に使用するファクトリinsertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)protected void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
DocumentEvent を転送します。このメソッドは、イベントのタイプに左右される insertUpdate、removeUpdate、または changedUpdate への呼び出しを持つビューを送信するだけです。イベントが必要な子にイベントを転送するときに、forwardUpdate で呼び出されます。v - イベントを子ビューに転送するe - 関連するドキュメントからの変更情報a - ビューの現在の割り当てf - ビューが子を持つ場合に再構築に使用するファクトリforwardUpdate(javax.swing.event.DocumentEvent.ElementChange, javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)protected void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
ElementChange 記録が null でない場合、新しいレイアウトが再スケジュールされるように、preferenceChanged を呼び出すために実装されます。ec - このビューが扱う要素への変更。変更がなかった場合、null になる可能性があるe - 関連するドキュメントからの変更情報a - ビューの現在の割り当てinsertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)@Deprecated public Shape modelToView(int pos, Shape a) throws BadLocationException
Position.Bias.Forward にするために実装されます。pos - 変換対象の位置 >= 0a - 割り当てられた描画領域BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を示さない場合modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)@Deprecated public int viewToModel(float x, float y, Shape a)
x - X 座標 >= 0y - Y 座標 >= 0a - 割り当てられた描画領域viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[]) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.