JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing.text
クラス ZoneView

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
 
コンストラクタの概要
ZoneView(Element elem, int axis)
          ZoneView を構築します。
 
メソッドの概要
protected  View createZone(int p0, int p1)
          このオブジェクトが扱う範囲内にあるモデル内の指定範囲内のゾーンを表すビューを生成します。
 int getMaximumZoneSize()
          現在のゾーンサイズの最大値を返します。
 int getMaxZonesLoaded()
          同時にロードできるゾーン数の現在の設定を返します。
protected  int getViewIndexAtPosition(int pos)
          モデル内の指定された位置を表す子ビューのインデックスを返します。
 void insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
          このビューが扱う場所にあるドキュメントに何かが挿入されたことを通知します。
protected  boolean isZoneLoaded(View zone)
          ゾーンがロード状態にあるかどうかを判定します。
protected  void loadChildren(ViewFactory f)
          子をすべてロードしてビューを初期化します。
 void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
          このビューが扱う場所にあるドキュメントに何かが削除されたことを通知します。
 void setMaximumZoneSize(int size)
          望ましい最大ゾーンサイズを設定します。
 void setMaxZonesLoaded(int mzl)
          同時にロードできるゾーン数の現在の設定を設定します。
protected  void unloadZone(View zone)
          ゾーンをメモリ保存状態に変換して、ゾーンをアンロードします。
protected  boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
          スーパークラスの動作が、この場合は適切でない子ビューの更新を試みます。
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
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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 を返します。


createZone

protected View createZone(int p0,
                          int p1)
このオブジェクトが扱う範囲内にあるモデル内の指定範囲内のゾーンを表すビューを生成します。このメソッドはゾーン管理ロジックが新しいゾーンを生成することで呼び出されます。サブクラスはこのメソッドを変更して異なったゾーン実装を提供できます。

パラメータ:
p0 - 望ましいゾーンの開始値。この値は getStartOffset() 以上で getEndOffset() より小さい。また p1 よりも小さい
p1 - 望ましいゾーンの終了値。この値は getStartOffset() より大きく、getEndOffset() 以下。また p0 よりも大きい

loadChildren

protected void loadChildren(ViewFactory f)
子をすべてロードしてビューを初期化します。setParent メソッドによって呼び出されます。このメソッドを再実装すると、どの子も (ゾーンによって生成されるので) 直接ロードしないようにできます。このメソッドはゾーンの初期設定を生成します。ただし、実際にはゾーンの表示またはモデル座標、ビュー座標の変換の試みをするまでゾーンは設定されません。

オーバーライド:
クラス CompositeView 内の loadChildren
パラメータ:
f - ビューファクトリ
関連項目:
CompositeView.setParent(javax.swing.text.View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
モデル内の指定された位置を表す子ビューのインデックスを返します。

オーバーライド:
クラス CompositeView 内の getViewIndexAtPosition
パラメータ:
pos - 位置 >= 0
戻り値:
指定された位置を表すビューのインデックス。位置を表すビューがない場合は、-1

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory f)
スーパークラスの動作が、この場合は適切でない子ビューの更新を試みます。これは、子はゾーンで関連する要素の変更の影響を直接受けないからです。これを再実装しても何も行われず、false を返します。

オーバーライド:
クラス View 内の updateChildren
パラメータ:
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 つ以上のゾーンセットに分割する必要があるかどうかを判定します。

オーバーライド:
クラス View 内の insertUpdate
パラメータ:
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)
このビューが扱う場所にあるドキュメントに何かが削除されたことを通知します。これはスーパークラスに委譲されていますが、再実装して関連ゾーンを更新します。つまり、ゾーンを削除するか、または別のゾーンに結合する必要があるかどうかを判定します。

オーバーライド:
クラス View 内の removeUpdate
パラメータ:
changes - 関連するドキュメントからの変更情報
a - ビューの現在の割り当て
f - ビューが子を持つ場合に再構築に使用するファクトリ
関連項目:
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

JavaTM 2
Platform
Std. Ed. v1.4.0

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

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