JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.text
クラス AsyncBoxView

java.lang.Object
  |
  +--javax.swing.text.View
        |
        +--javax.swing.text.AsyncBoxView
すべての実装インタフェース:
SwingConstants

public class AsyncBoxView
extends View

非同期にレイアウトを行うボックスです。GUI イベントスレッドにレイアウトを行わないで GUI イベントスレッドを移動させ続けるのに役立ちます。レイアウトは子ビューの操作で詳細に行われます。各子ビューがレイアウトの一部にアクセスされたあと (操作に時間がかかる場合がある)、残りのタスクを放棄することも、新しい優先度の高いタスク (つまり同期の要求または可視領域にサービスすること) を行うこともできます。

子ビューにアクセスしている間に、関連するドキュメントで読み込みロックが取得され、アクセス中モデルを安定させます。

導入されたバージョン:
1.3

内部クラスの概要
 class AsyncBoxView.ChildLocator
          局部の周辺で変更が行われているときに、局部での子ビューの効果的な位置を管理するクラスです。
 class AsyncBoxView.ChildState
          子ビューのレイアウト状態を表すレコードです。
 
フィールドの概要
protected  AsyncBoxView.ChildLocator locator
          子のオフセットを管理するオブジェクトです。
 
クラス javax.swing.text.View から継承したフィールド
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
 
インタフェース javax.swing.SwingConstants から継承したフィールド
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NORTH, NORTH_EAST, NORTH_WEST, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
コンストラクタの概要
AsyncBoxView(Element elem, int axis)
          非同期レイアウトを行うボックスビューを構築します。
 
メソッドの概要
protected  AsyncBoxView.ChildState createChildState(View v)
          サブクラスが ChildState レコードを拡張してより多くのことを行なったり保持したりできるように、新しい ChildState レコードがこのメソッドによって作成されます。
protected  void flushRequirementChanges()
          設定の変更を上方の親ビューへ通知します。
 float getBottomInset()
          ビュー周囲の下部マージンを返します。
 Shape getChildAllocation(int index, Shape a)
          指定された子ビューの割り当てを取り出します。
protected  AsyncBoxView.ChildState getChildState(int index)
          指定されたインデックスの子のレイアウト状態を表すオブジェクトを取り出します。
protected  LayoutQueue getLayoutQueue()
          レイアウトに使用するキューを取り出します。
 float getLeftInset()
          ビュー周囲の左部マージンを返します。
 int getMajorAxis()
          主軸 (子のタイリングの基準にする軸) を取り出します。
 float getMaximumSpan(int axis)
          このビューの最大スパンを軸に沿って指定します。
 float getMinimumSpan(int axis)
          このビューの最小スパンを軸に沿って指定します。
 int getMinorAxis()
          副軸 (タイリングされた軸に直角の軸) を取り出します。
 float getPreferredSpan(int axis)
          このビューに適切なスパンを軸に沿って指定します。
 float getRightInset()
          ビュー周囲の右部マージンを返します。
 float getTopInset()
          ビュー周囲の上部マージンを返します。
 View getView(int n)
          n 番目の子ビューを返します。
 int getViewCount()
          このビュー内のビューの数を返します。
 int getViewIndex(int pos, Position.Bias b)
          モデル内の指定された位置を示す子ビューインデックスを返します。
protected  int getViewIndexAtPosition(int pos, Position.Bias b)
          モデル内の指定された位置を表す、子ビューのインデックスを取り出します。
protected  void loadChildren(ViewFactory f)
          ビューを初期化するためにすべての子をロードします。
protected  void majorRequirementChange(AsyncBoxView.ChildState cs, float delta)
          主軸に沿って変更された要件です。
protected  void minorRequirementChange(AsyncBoxView.ChildState cs)
          副軸に沿って変更された要件です。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          ドキュメントモデルの座標空間からビューの座標空間へのマッピングを提供します。
 void paint(Graphics g, Shape alloc)
          指定された割り当ておよび描画表面を使って、ビューを描画します。
 void preferenceChanged(View child, boolean width, boolean height)
          子ビューは親でこのメソッドを呼び出し、設定が変更され、再度レイアウト変更の必要があることを示すことができます。
 void replace(int offset, int length, View[] views)
          子ビューを更新するためにスーパークラスを呼び出し、子のステータスレコードを更新します。
 void setBottomInset(float i)
          ビュー周囲の下部マージンを設定します。
 void setLeftInset(float i)
          ビュー周囲の左部マージンを設定します。
 void setParent(View parent)
          ビューの親を設定します。
 void setRightInset(float i)
          ビュー周囲の右部マージンを設定します。
 void setSize(float width, float height)
          ビューのサイズを設定します。
 void setTopInset(float i)
          ビュー周囲の上部マージンを設定します。
protected  void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
          モデルから変更の通知を受け取った場合に、レイアウトを更新します。
 int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
          ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。
 
クラス javax.swing.text.View から継承したメソッド
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getNextVisualPositionFrom, getParent, getResizeWeight, getStartOffset, getViewFactory, insert, insertUpdate, isVisible, modelToView, modelToView, remove, removeAll, removeUpdate, updateChildren, viewToModel
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

locator

protected AsyncBoxView.ChildLocator locator
子のオフセットを管理するオブジェクトです。子の位置の管理のためのロックはすべて、このオブジェクトで行われます。
コンストラクタの詳細

AsyncBoxView

public AsyncBoxView(Element elem,
                    int axis)
非同期レイアウトを行うボックスビューを構築します。
パラメータ:
elem - 表すモデルの要素
axis - タイリングの基準にする軸。X_AXIS または Y_AXIS のどちらか
メソッドの詳細

getMajorAxis

public int getMajorAxis()
主軸 (子のタイリングの基準にする軸) を取り出します。X_AXIS または Y_AXIS のどちらかの値を持ちます。

getMinorAxis

public int getMinorAxis()
副軸 (タイリングされた軸に直角の軸) を取り出します。X_AXIS または Y_AXIS のどちらかの値を持ちます。

getTopInset

public float getTopInset()
ビュー周囲の上部マージンを返します。

setTopInset

public void setTopInset(float i)
ビュー周囲の上部マージンを設定します。
パラメータ:
i - インセットの値

getBottomInset

public float getBottomInset()
ビュー周囲の下部マージンを返します。

setBottomInset

public void setBottomInset(float i)
ビュー周囲の下部マージンを設定します。
パラメータ:
i - インセットの値

getLeftInset

public float getLeftInset()
ビュー周囲の左部マージンを返します。

setLeftInset

public void setLeftInset(float i)
ビュー周囲の左部マージンを設定します。
パラメータ:
i - インセットの値

getRightInset

public float getRightInset()
ビュー周囲の右部マージンを返します。

setRightInset

public void setRightInset(float i)
ビュー周囲の右部マージンを設定します。
パラメータ:
i - インセットの値

getChildState

protected AsyncBoxView.ChildState getChildState(int index)
指定されたインデックスの子のレイアウト状態を表すオブジェクトを取り出します。
パラメータ:
index - 子のインデックス。0 以上で getViewCount() より小さい値であること

getLayoutQueue

protected LayoutQueue getLayoutQueue()
レイアウトに使用するキューを取り出します。

createChildState

protected AsyncBoxView.ChildState createChildState(View v)
サブクラスが ChildState レコードを拡張してより多くのことを行なったり保持したりできるように、新しい ChildState レコードがこのメソッドによって作成されます。

majorRequirementChange

protected void majorRequirementChange(AsyncBoxView.ChildState cs,
                                      float delta)
主軸に沿って変更された要件です。指定された ChildState オブジェクトのレイアウトを行うスレッドが、子ビューの新しい設定を取得し終えたときに呼び出します。呼び出すのは通常レイアウトスレッドですが、モデルとビューの変換の実行など、GUI スレッドが何かをすぐに更新しようとしている場合は、GUI スレッドが呼び出す場合もあります。

minorRequirementChange

protected void minorRequirementChange(AsyncBoxView.ChildState cs)
副軸に沿って変更された要件です。指定された ChildState オブジェクトのレイアウトを行うスレッドが、子ビューの新しい設定を取得し終えたときに呼び出します。呼び出すのは通常レイアウトスレッドですが、モデルとビューの変換の実行など、GUI スレッドが何かをすぐに更新しようとしている場合は、GUI スレッドが呼び出します。

flushRequirementChanges

protected void flushRequirementChanges()
設定の変更を上方の親ビューへ通知します。レイアウトスレッドによって呼び出されます。

replace

public void replace(int offset,
                    int length,
                    View[] views)
子ビューを更新するためにスーパークラスを呼び出し、子のステータスレコードを更新します。このオブジェクトは、レイアウトスレッドとの相互作用が発生しないように、書き込みロックがモデルで保持されている間に呼び出されることになっています (つまり、レイアウトスレッドは処理開始前に読み込みロックを取得する)。
オーバーライド:
クラス View 内の replace
パラメータ:
offset - 子ビューへの開始オフセット >= 0
length - 置き換える既存のビューの数 >= 0
views - 挿入する子ビュー

loadChildren

protected void loadChildren(ViewFactory f)
ビューを初期化するためにすべての子をロードします。このメソッドは、setParent メソッドによって呼び出されます。サブクラスは、このメソッドを再実装して別の方法で子ビューを初期化できます。デフォルトの実装は、子要素ごとに子ビューを作成します。

通常書き込みロックは子が変更される間 Document で保持され、描画スレッドとレイアウトスレッドを安全に保ちます。これに対する例外は、既存の要素を表すようこのメソッドによってビューが初期化されるときで、初期化中は preferenceChanged を除外するよう同期化されます。

パラメータ:
f - ビューファクトリ
関連項目:
setParent(javax.swing.text.View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos,
                                     Position.Bias b)
モデル内の指定された位置を表す、子ビューのインデックスを取り出します。このメソッドは、それぞれの子要素に対して子ビューがある場合に、ビューを取得するために実装されています。
パラメータ:
pos - 位置 >= 0
戻り値:
指定された位置を表すビューのインデックス。位置を表すビューがない場合は、-1

updateLayout

protected void updateLayout(DocumentEvent.ElementChange ec,
                            DocumentEvent e,
                            Shape a)
モデルから変更の通知を受け取った場合に、レイアウトを更新します。子のオフセットが正しく計算されるように、ChildLocator の変更を通知するために実装されます。
オーバーライド:
クラス View 内の updateLayout
パラメータ:
ec - このビューが扱う要素への変更。変更がない場合は null の可能性がある
e - 関連したドキュメントからの変更情報
a - ビューの現在の割り当て
f - ビューが子を持つ場合に再構築に使用するファクトリ
関連項目:
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

setParent

public void setParent(View parent)
ビューの親を設定します。このビューがまだ子を持たない場合は、loadChildren メソッドの呼び出しとともにスーパークラスの動作を提供するために実装し直されます。子をコンストラクタの中にロードしないようにしてください。これは、親を設定する動作が原因となって、たとえば収容側コンテナを取得するために、子が階層をさかのぼって検索しようとするからです。このビューが子を持つ場合は、ビュー階層内のある位置から別の位置へ移動しているので、loadChildren メソッドは呼び出されません。
オーバーライド:
クラス View 内の setParent
パラメータ:
parent - ビューの親。ない場合は null

preferenceChanged

public void preferenceChanged(View child,
                              boolean width,
                              boolean height)
子ビューは親でこのメソッドを呼び出し、設定が変更され、再度レイアウト変更の必要があることを示すことができます。このメソッドはレイアウトスレッドで新しい作業に待機するために実装し直されます。このメソッドは子を通じて複数のスレッドからメッセージを託されます。
オーバーライド:
クラス View 内の preferenceChanged
パラメータ:
child - 子ビュー
width - 幅の設定が変更されている場合は true
height - 高さの設定が変更されている場合は true
関連項目:
JComponent.revalidate()

setSize

public void setSize(float width,
                    float height)
ビューのサイズを設定します。レイアウトの必要がある場合はビューのレイアウトを表示します。

小スパンに変更があったかどうかを確認するために実装されます。ビューは短軸に沿って柔軟なためです。変更があった場合、このメソッドは優先順位の高いタスクをレイアウトスレッドに追加します。レイアウトスレッドは子を整頓するために、すべての ChildState レコードで、子のサイズを変更する必要があり、また優先順位の低い大量のタスクを作成する必要がある、というマークを付けます。

このメソッドは通常 GUI イベントスレッドによって呼び出されます。GUI イベントスレッドの処理速度は、できることなら低下させたくないものです。各レコードにマークをするという時間のかかる可能性のあるタスクをプッシュすると GUI スレッドは解放されますが、ペイントしようとするビューは開いたままで、ペイントは行われません。ビューはサイズ変更とマークされ、すべての子にマークが付けられると、ResizeTask はフラグ設定をオフにします。

オーバーライド:
クラス View 内の setSize
パラメータ:
width - 幅 >= 0
height - 高さ >= 0

paint

public void paint(Graphics g,
                  Shape alloc)
指定された割り当ておよび描画表面を使って、ビューを描画します。

描画の対象範囲、つまりクリップされていない領域が最新のものかどうかを判定するために実装されます。最新のものであれば子が描画されます。最新のものでない場合、対象領域を作成するタスクが優先順位の高いタスクとしてレイアウトのキューに置かれます。このメソッドはイベントスレッドごとに、準備ができていれば描画により移動し続け、準備ができていない場合は延期します。ペイント要求はスケジュール変更可能です

オーバーライド:
クラス View 内の paint
パラメータ:
g - 使用する描画表面
alloc - 描画のために割り当てられた領域
関連項目:
View.paint(java.awt.Graphics, java.awt.Shape)

getPreferredSpan

public float getPreferredSpan(int axis)
このビューに適切なスパンを軸に沿って指定します。
オーバーライド:
クラス View 内の getPreferredSpan
パラメータ:
axis - View.X_AXIS または View.Y_AXIS
戻り値:
ビューの描画対象のスパン >= 0。通常、ビューは返されたスパン内に描画されることになるが、保証はない。親はビューのサイズ変更や分割を行う可能性がある
例外:
IllegalArgumentException - 軸が無効な型

getMinimumSpan

public float getMinimumSpan(int axis)
このビューの最小スパンを軸に沿って指定します。
オーバーライド:
クラス View 内の getMinimumSpan
パラメータ:
axis - View.X_AXIS または View.Y_AXIS
戻り値:
ビューの描画対象のスパン >= 0。通常、ビューは返されたスパン内に描画されることになるが、保証はない。親はビューのサイズ変更や分割を行う可能性がある
例外:
IllegalArgumentException - 軸が無効な型

getMaximumSpan

public float getMaximumSpan(int axis)
このビューの最大スパンを軸に沿って指定します。
オーバーライド:
クラス View 内の getMaximumSpan
パラメータ:
axis - View.X_AXIS または View.Y_AXIS
戻り値:
ビューの描画対象のスパン >= 0。通常、ビューは返されたスパン内に描画されることになるが、保証はない。親はビューのサイズ変更や分割を行う可能性がある
例外:
IllegalArgumentException - 軸が無効な型

getViewCount

public int getViewCount()
このビュー内のビューの数を返します。デフォルトでは複合ビューにならないので、このメソッドは 0 を返します。
オーバーライド:
クラス View 内の getViewCount
戻り値:
ビューの数 >= 0
関連項目:
View.getViewCount()

getView

public View getView(int n)
n 番目の子ビューを返します。デフォルトでは子がないので、このメソッドは null を返します。
オーバーライド:
クラス View 内の getView
パラメータ:
n - 取得するビューの番号 >= 0 && < getViewCount()
戻り値:
ビュー

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
指定された子ビューの割り当てを取り出します。このメソッドを使用すると、ビューがそれらの位置を格納していることを仮定することなく、さまざまなビューがどこにあるかを知ることができます。デフォルトでは子ビューを持たないので、このメソッドは null を返します。
オーバーライド:
クラス View 内の getChildAllocation
パラメータ:
index - 子のインデックス >= 0 && < getViewCount()
a - このビューに対する割り当て
戻り値:
子に対する割り当て

getViewIndex

public int getViewIndex(int pos,
                        Position.Bias b)
モデル内の指定された位置を示す子ビューインデックスを返します。デフォルトでは、ビューに子がないので、あらゆる位置に対して有効な子インデックスがないことを表すには、-1 を返すように実装されています。
オーバーライド:
クラス View 内の getViewIndex
パラメータ:
pos - 位置 >= 0
戻り値:
指定された位置を表すビューのインデックス。位置を表すビューがない場合は、-1
導入されたバージョン:
1.3

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias b)
                  throws BadLocationException
ドキュメントモデルの座標空間からビューの座標空間へのマッピングを提供します。
オーバーライド:
クラス View 内の modelToView
パラメータ:
pos - 変換対象の位置 >= 0
a - 描画のために割り当てられた領域
b - 位置が 2 つのビューの境界である場合のための、オフセットによって表される前の文字または次の文字へのバイアス
戻り値:
指定された位置のバウンディングボックス
例外:
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合
IllegalArgumentException - bias 引数が無効な場合
関連項目:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

viewToModel

public int viewToModel(float x,
                       float y,
                       Shape a,
                       Position.Bias[] biasReturn)
ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。biasReturn 引数は、指定された点がモデル内の次の文字と近いのか、あるいはモデル内の前の文字と近いのかを示します。

このメソッドは GUI スレッドによって呼び出され、関連するモデルで読み込みロックを保持します。子ビューを配置して ChildLocator オブジェクトのロックを使ってその子ビューの割り当てを決定し、レイアウトスレッドとの相互作用を避けるために ChildState オブジェクトのロックを使って子ビューの viewToModel を呼び出すために実装されます。

オーバーライド:
クラス View 内の viewToModel
パラメータ:
x - X 座標 >= 0
y - Y 座標 >= 0
a - 描画のために割り当てられた領域
戻り値:
ビュー内の指定された点をもっともよく表すモデル内の位置 >= 0。biasReturn 引数は、指定された点がモデル内の次の文字と近いのか、あるいはモデル内の前の文字と近いのかを示す

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.