JavaTM 2 Platform
Standard Ed. 5.0

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, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, 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  boolean getEstimatedMajorSpan()
          現在、主なスパンが評価されているかどうかを示します。
protected  float getInsetSpan(int axis)
          インセットで取り上げられた軸に沿ったスパンを取り出します。
protected  LayoutQueue getLayoutQueue()
          レイアウトに使用するキューを取り出します。
 float getLeftInset()
          ビュー周囲の左部マージンを返します。
 int getMajorAxis()
          主軸 (子のタイリングの基準にする軸) を取り出します。
 float getMaximumSpan(int axis)
          このビューの最大スパンを軸に沿って指定します。
 float getMinimumSpan(int axis)
          このビューの最小スパンを軸に沿って指定します。
 int getMinorAxis()
          副軸 (タイリングされた軸に直角の軸) を取り出します。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。
 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)
          ビュー周囲の下部マージンを設定します。
protected  void setEstimatedMajorSpan(boolean isEstimated)
          主なスパンを評価中として処理するかどうかを決定する、estimatedMajorSpan プロパティを設定します。
 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, getParent, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, 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 - インセットの値

getInsetSpan

protected float getInsetSpan(int axis)
インセットで取り上げられた軸に沿ったスパンを取り出します。

パラメータ:
axis - 合計インセットを決定する軸。X_AXIS または Y_AXIS のどちらか
導入されたバージョン:
1.4

setEstimatedMajorSpan

protected void setEstimatedMajorSpan(boolean isEstimated)
主なスパンを評価中として処理するかどうかを決定する、estimatedMajorSpan プロパティを設定します。このプロパティが true の場合、主軸に沿った setSize の値により主軸に沿った要件が変更され、増分の変更は子がすべて更新されるまで無視されます (この更新により、プロパティが自動的に false に設定されます)。プロパティが false の場合、majorSpan の値が正確であるとみなされ、計算時に増分の変更が合計に加えられます。

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

getEstimatedMajorSpan

protected boolean getEstimatedMajorSpan()
現在、主なスパンが評価されているかどうかを示します。

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

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 オブジェクトのレイアウトを行うスレッドが、子ビューの新しい設定を取得し終えたときに呼び出します。呼び出すのは通常レイアウトスレッドですが、モデルとビューの変換の実行など、イベントスレッドが何かをすぐに更新しようとしている場合は、イベントスレッドのこともあります。

この実装では、親ビューに通知する必要のある要件で主軸を考慮するかどうかを将来確認するために、主軸を変更済みとしてマークします。主軸と共にスパンが評価されない場合、指定されたデルタで更新されて、増分の変更が反映されます。主なスパンが評価される場合、デルタは無視されます。


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 - ビューの現在の割り当て
関連項目:
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)
ビューのサイズを設定します。ビューがレイアウト情報をキャッシュに書き込む場合はビューのレイアウトを表示します。

主軸は非同期に更新され、タイリングされた子の合計でなければならないため、主軸に対する呼び出しは無視されます。主軸に柔軟性があるため、小スパンが変更されると処理がキューに入り、子のサイズが変更されます。

オーバーライド:
クラス 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 - 軸のタイプが無効な場合
関連項目:
View.getPreferredSpan(int)

getMinimumSpan

public float getMinimumSpan(int axis)
このビューの最小スパンを軸に沿って指定します。

オーバーライド:
クラス View 内の getMinimumSpan
パラメータ:
axis - View.X_AXIS または View.Y_AXIS
戻り値:
ビューの描画対象のスパン >= 0。通常、ビューは返されたスパン内に描画されることになるが、保証はない。親はビューのサイズ変更や分割を行う可能性がある
例外:
IllegalArgumentException - 軸のタイプが無効な場合
関連項目:
View.getPreferredSpan(int)

getMaximumSpan

public float getMaximumSpan(int axis)
このビューの最大スパンを軸に沿って指定します。

オーバーライド:
クラス View 内の getMaximumSpan
パラメータ:
axis - View.X_AXIS または View.Y_AXIS
戻り値:
ビューの描画対象のスパン >= 0。通常、ビューは返されたスパン内に描画されることになるが、保証はない。親はビューのサイズ変更や分割を行う可能性がある
例外:
IllegalArgumentException - 軸のタイプが無効な場合
関連項目:
View.getPreferredSpan(int)

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 引数は、指定された点がモデル内の次の文字と近いのか、あるいはモデル内の前の文字と近いのかを示す

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。ビューによっては、可視ではないか、モデル内と同じ順序でないか、またはモデル内の位置へのアクセスを許可しない場合があります。

オーバーライド:
クラス View 内の getNextVisualPositionFrom
パラメータ:
pos - 変換対象の位置 >= 0
a - 描画のために割り当てられた領域
direction - 現在位置からの方向。これは、キーボードに通常存在する矢印キーと見なすことができ、
    SwingConstants.WESTSwingConstants.EASTSwingConstants.NORTHSwingConstants.SOUTH のどれかになる
biasRet - チェックされたバイアスを含む配列
戻り値:
次の可視の位置をもっともよく表すモデル内の位置
例外:
BadLocationException - @exception IllegalArgumentException direction が無効な場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。