java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
javax.swing.text.BoxView
javax.swing.text.ZoneView
- すべての実装されたインタフェース:
SwingConstants
public class ZoneView extends BoxView
ZoneViewはViewの実装で、子ビューが表示またはモデルとビューの変換のために必要になるまで生成または格納されないゾーンを生成します。 この機能を使用すると、表されているモデルが非常に大きい場合に、アクティブに表示、編集されている領域だけのビュー・オブジェクトを構築することで、大幅にメモリーの消費を削減できます。 子のサイズは推測することも保存された結果だけで非同期に計算することもできます。
ZoneViewは子のゾーンを実装するボックスを提供するためにBoxViewを拡張します。 ゾーンはクラスのインスタンスの子という特別なView実装で、ZoneViewのインスタンスがかかわっているモデルの部分だけを表します。 ゾーンは子のビューの表示の試みられるまで子ビューを生成しません。 ボックス型のビューは次の理由により適しています。
- ボックスは良く使用されるビューで、この動作を提供するボックスによりビュー・ファクトリからビュー階層へ動作をプラグする機会を提供できる。
- ボックスは一方向に並べられているため、確実な方法で簡単にゾーンに分割できる。
- 通常、ボックスとモデルの関係は簡単で、ボックスは子の要素を直接表す子ビューを生成する。
- ボックスはほかの型よりも簡単にサイズを推定できる。
デフォルトの動作は、maxZoneSizeとmaxZonesLoadedの2つのプロパティが制御しています。 maxZoneSizeをInteger.MAX_VALUEに設定するとゾーンを一つしか生成しないという効果があります。 そのため、ビューを効果的にデコレータ・パターンの実装へ切り替えることができます。 maxZonesLoadedをInteger.MAX_VALUEの値に設定すると、ゾーンのアンロードはできません。 簡単に言うと、ビューがかかわっている要素の子要素が表されている境界に生成されます。 ゾーンは任意のView実装となることができますが、デフォルトの実装はかなり大きなゾーンをサポートしているAsyncBoxViewが基になります。
- 導入されたバージョン:
- 1.3
- 関連項目:
View
-
フィールドのサマリー
クラス 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
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明protected View
createZone(int p0, int p1)
このオブジェクトが扱う範囲内にあるモデル内の指定範囲内のゾーンを表すビューを生成します。int
現在のゾーン・サイズの最大値を取得します。int
同時にロードできるゾーン数の現在の設定を取得します。protected int
getViewIndexAtPosition(int pos)
モデル内の指定された位置を表す子ビューのインデックスを返します。void
insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
このビューが扱う位置でドキュメントに何かが挿入されたことを通知します。protected boolean
isZoneLoaded(View zone)
ゾーンがロード状態にあるかどうかを判定します。protected void
ビューを初期化するためにすべての子をロードします。void
removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
このビューが扱うドキュメント内の位置から何かが削除されたということを通知します。void
setMaximumZoneSize(int size)
望ましい最大ゾーン・サイズを設定します。void
setMaxZonesLoaded(int mzl)
同時にロードできるゾーン数の現在の設定を設定します。protected void
unloadZone(View zone)
ゾーンを省メモリー状態に変換して、ゾーンをアンロードします。protected boolean
スーパー・クラスの動作により、子ビューの更新が試みられます。ただし、子はゾーンであり、関連する要素の変更の影響を直接受けないため、この動作は適切ではありません。protected void
zoneWasLoaded(View zone)
ロードされるとゾーンにより呼び出されます。クラス javax.swing.text.BoxViewで宣言されたメソッド
baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel
クラス javax.swing.text.CompositeViewで宣言されたメソッド
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent
クラス javax.swing.text.Viewで宣言されたメソッド
append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel
-
コンストラクタの詳細
-
ZoneView
public ZoneView(Element elem, int axis)ZoneViewを構築します。- パラメータ:
elem
- このビューが扱う要素axis
- View.X_AXISまたはView.Y_AXIS
-
-
メソッドの詳細
-
getMaximumZoneSize
public int getMaximumZoneSize()現在のゾーン・サイズの最大値を取得します。- 戻り値:
- 現在の最大ゾーン・サイズ
-
setMaximumZoneSize
public void setMaximumZoneSize(int size)望ましい最大ゾーン・サイズを設定します。 ゾーンは子ビューの境界に生成されるため、一つの子ビューがこのサイズより大きい場合は、ゾーンはこのサイズより大きくなる場合があります。- パラメータ:
size
- ゾーンを小さく分割する前の、ゾーンが表す文字数。
-
getMaxZonesLoaded
public int getMaxZonesLoaded()同時にロードできるゾーン数の現在の設定を取得します。- 戻り値:
- 同時にロード可能なゾーン数の現在の設定
-
setMaxZonesLoaded
public void setMaxZonesLoaded(int mzl)同時にロードできるゾーン数の現在の設定を設定します。mzl
が1より小さい場合はIllegalArgumentException
がスローされます。- パラメータ:
mzl
- アクティブにロードされる望ましい最大ゾーン数。0より大きい値にする必要がある- 例外:
IllegalArgumentException
-mzl
が1より小さい場合
-
zoneWasLoaded
protected void zoneWasLoaded(View zone)ロードされるとゾーンにより呼び出されます。 これは、アンロード状態にあったゾーンで表示またはモデルの変換、ビューの変換を試みたときに起こります。 これはゾーンが最大数に達したかどうかを判定するために実装されます。最大数に達している場合は、一番古いゾーンをアンロードします。- パラメータ:
zone
- ロードされたばかりの子ビュー。
-
unloadZone
protected void unloadZone(View zone)ゾーンを省メモリー状態に変換して、ゾーンをアンロードします。 ゾーンはこのビューが扱う要素の子要素のサブセットを表します。 したがって、デフォルトの実装は単にすべての子を削除します。- パラメータ:
zone
- アンロード状態に設定するのが望ましい子ビュー。
-
isZoneLoaded
protected boolean isZoneLoaded(View zone)ゾーンがロード状態にあるかどうかを判定します。 ゾーンはこのビューが扱う要素の子要素のサブセットを表します。 したがって、デフォルトの実装では、ビューに子がある場合はtrueを返します。paramゾーンの子ビュー- パラメータ:
zone
- ゾーン- 戻り値:
- ゾーンがロードされた状態であるかどうかを示します。
-
createZone
protected View createZone(int p0, int p1)このオブジェクトが扱う範囲内にあるモデル内の指定範囲内のゾーンを表すビューを生成します。 このメソッドはゾーン管理ロジックが新しいゾーンを生成することで呼び出されます。 サブクラスはこのメソッドを変更して異なったゾーン実装を提供できます。- パラメータ:
p0
- 望ましいゾーンの開始値。 値はgetStartOffset()以上でgetEndOffset()未満であるべきです。 またp1未満でもあるべきです。p1
- 望ましいゾーンの終了値。 値はgetStartOffset()よりも大きくgetEndOffset()以下であるべきです。 またp0よりも大きい。- 戻り値:
- モデル内の指定された範囲のゾーンを表すビュー
-
loadChildren
protected void loadChildren(ViewFactory f)ビューを初期化するためにすべての子をロードします。 これは、setParent
メソッドによって呼び出されます。 このメソッドを再実装すると、どの子も(ゾーンによって生成されるので)直接ロードしないようにできます。 このメソッドはゾーンの初期設定を生成します。 ただし、実際にはゾーンの表示またはモデル座標、ビュー座標の変換の試みをするまでゾーンは設定されません。- オーバーライド:
loadChildren
、クラス:CompositeView
- パラメータ:
f
- ビュー・ファクトリ- 関連項目:
CompositeView.setParent(javax.swing.text.View)
-
getViewIndexAtPosition
protected int getViewIndexAtPosition(int pos)モデル内の指定された位置を表す子ビューのインデックスを返します。- オーバーライド:
getViewIndexAtPosition
、クラス:CompositeView
- パラメータ:
pos
- 位置>= 0- 戻り値:
- 指定された位置を表すビューのインデックス。その位置を表すビューがない場合は -1
-
updateChildren
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)スーパー・クラスの動作により、子ビューの更新が試みられます。ただし、子はゾーンであり、関連する要素の変更の影響を直接受けないため、この動作は適切ではありません。 これを再実装しても何も行われず、falseを返します。- オーバーライド:
updateChildren
、クラス:View
- パラメータ:
ec
- このビューが扱う要素への変更情報。 このメソッドが呼び出される場合はnull
にはならないe
- 関連するドキュメントからの変更情報f
- 子ビューの構築に使用するファクトリ- 戻り値:
- このビューが扱う要素の子要素を、子ビューが表すかどうか。 一部のビューでは扱う要素の一部を表す子を作成し、falseが返される。 この情報は、追加された要素の範囲のビューが転送されるかどうかを指定するのに使用される
- 関連項目:
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)
-
insertUpdate
public void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)このビューが扱う位置でドキュメントに何かが挿入されたことを通知します。 これはスーパー・クラスに委譲されていますが、再実装して関連ゾーンを更新します。つまり、ゾーンを2つ以上のゾーン・セットに分割する必要があるかどうかを判定します。- オーバーライド:
insertUpdate
、クラス:View
- パラメータ:
changes
- 関連するドキュメントからの変更情報a
- ビューの現在の割当てf
- ビューが子を持つ場合に再構築に使用するファクトリ- 関連項目:
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
removeUpdate
public void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)このビューが扱うドキュメント内の位置から何かが削除されたということを通知します。 これはスーパー・クラスに委譲されていますが、再実装して関連ゾーンを更新します。つまり、ゾーンを削除するか、または別のゾーンに結合する必要があるかどうかを判定します。- オーバーライド:
removeUpdate
、クラス:View
- パラメータ:
changes
- 関連するドキュメントからの変更情報a
- ビューの現在の割当てf
- ビューが子を持つ場合に再構築に使用するファクトリ- 関連項目:
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-