|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.swing.text.View
テキストパッケージの非常に重要な部分が View クラスです。名前が示すように、テキストモデルのビュー、あるいはテキストモデルの一部分を表します。このクラスはテキストコンポーネントの外観を扱います。このビューは、学習しなければならないまったく新しいものではなく、軽量コンポーネントと同様のコンポーネントになることを目的としています。実際、最初の View の実装は軽量コンポーネントでした。別の実装を優先し、Component の実装が捨て去られたのには、いくつかの理由があったのです。
JDK バージョン 1.1 では、軽量コンポーネントをサポートする時間の余裕がほとんどありませんでした。テキストを使用目的とする必要がある場合について、コンポーネントを軽量化する時間がなかっただけではありません。 JComponent に加えられた機能によりメモリの消費が増加したため、現状では重過ぎてテキストを表示することができません。
レイアウトセマンティクスは、まったくテキスト向きではありません。コンポーネントの現在のレイアウトセマンティクスを変更すると、既存のアプリケーションを破壊してしまう可能性があります。
コンポーネント API は整数型を使用しますが、バージョン 1.2 ではデバイスに依存しない浮動小数点の座標を使用できます。バージョン 1.1 および 1.2 の両方で機能する API は、移行によって生じる問題を最小化するのに便利です。旧バージョンの JDK 1.1 で機能している場合、View クラスは Shape インタフェースと float 引数を使って、Java 2 プラットフォームバージョン 1.2 以降の View 実装を可能にしています。
デフォルトでは、ビューは軽量です。ビューには、ビューが状態を保持しないで多くのものを取り出すことができる親ビューへの参照と、モデル (Element) の一部分への参照を含みます。ビューは、典型的なだけで便利なマッピングである、モデルの要素を正確に表す必要はありません。ビューは、2 つの Position オブジェクトを代わりに維持してモデルの位置を維持できます (要素のフラグメントの表現など)。ビューがバラバラにされた場合の通常のフォーマットの結果です。モデルが変更され、ビューがそのモデルを反映するように変更されなければならないとき、要素との実質的な関係の利便性を、ビューを生成するファクトリの構築によって簡単にしたり、ビュー各部分の追跡を継続することで簡単にします。つまり、単純なビューは Element を直接表しますが、複雑なビューは違います。
ビューには以下の機能があります。
組み合わされた Component のビューには、doLayout や setSize と同様の setSize メソッドがあります。Component のビューには、1 つの軸と、変更が識別できることを要求する子だけを無効にできる場合を除き invalidate と同様の preferenceChanged メソッドがあります。
View はサイズを示します。最小スパン、推奨スパン、最大スパンの 3 つの値で表示されます。ビューのレイアウトは各軸に依存しないで行われます。View 実装を正しく機能させるには、最小スパン <= 推奨スパン、または推奨スパン <= 最大スパンとなります。
レイアウトに関するメソッドの最小設定は以下のとおりです。
何回も呼び出されるためには setSize メソッドを作成します (サイズが変更されない場合でも呼び出されることがあります)。setSize メソッドは通常、最新のレイアウトを必要とする操作を View 上で試みる前に、View のレイアウトが完了するように呼び出されます。ビューのサイズは必ず、そのビューで指定されたスパンの最小スパンから最大スパンの範囲内の値に設定されます。さらに、ビューで親に必要なレイアウト値に変更した場合、このビューは必ずその親の preferenceChanged メソッドを呼び出し親に引き受けを要求します。preferenceChanged が送られるまで、その親 View は変更を認識するように要求されていません。このため、親 View の実装は必要に応じて子の要求をキャッシュできます。呼び出し順序は次のようになります。
ビューが子供を持つ場合、正確な呼び出し順序は親ビューのレイアウト機能にかかっています。どの子に何を提供するのか、または子を 1 度に 1 つ繰り返し更新するのかを指定する前に、ビューは子の推奨設定を収集することがあります。
ペイントメソッドで描画しますが、コンポーネントペイントメソッドとよく似ています。ビューは、かなり大きなツリーを生成する可能性があると考えられます。View の描画に対して以下のセマンティクスが用意されています。
レンダリングのためのメソッドは次のとおりです。
ビューオブジェクトはファクトリから生成されており、必ずしも特定のパターンに依存することはないので、モデルの空間表現を適切に位置づける変換を実行できなければなりません。次のメソッドがこれを実行します。
変換しようとする前にレイアウトを有効にする必要があります。この変換は有効ではなく、変更が DocumentEvent 経由でモデルから送られる間、変換しないでください。
ビュー全体がいくつもの分割部分で表現されていると (ビューを変更し、最小限の新規コードの書き込みをする場合、それが最適な状態ですが)、莫大な数の DocumentListeners を保持するのは不可能です。各ビューがモデルに待機するとすれば、実際にはほとんどのビューは指定された時間に送られる変更に関われません。モデルにはビューに関する情報がないので、変更情報の伝送をフィルタする方法がありません。代わりに、ビュー階層自身が変更情報の送信を行います。ビュー階層のどのレベルでも、詳細な変更情報を効率よく分配するために、ビューの子に関する情報は十分にあります。したがって、変更はビュー階層のルートから送られます。これは次のメソッドが実行します。
フィールドの概要 | |
static int |
BadBreakWeight
フォーマット目的とするには不完全な分割の機会であるビューを示すウェイトです。 |
static int |
ExcellentBreakWeight
分割をサポートしているビューを示すウェイトで、分割するのに適した位置であることを表わしています。 |
static int |
ForcedBreakWeight
分割をサポートしているビューを示すウェイトで、子を分割することで子をフォーマットするビューに配置されている場合に、ビューを正しく表わすには分割しなければなりません。 |
static int |
GoodBreakWeight
分割をサポートしているビューを示すウェイトですが、もっと良い機会が存在する可能性があります。 |
static int |
X_AXIS
フォーマット/分割処理の軸です。 |
static int |
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 |
コンストラクタの概要 | |
View(Element elem)
新しい View オブジェクトを作成します。 |
メソッドの概要 | |
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()
このビューが扱うモデルの一部を取り出します。 |
View |
getView(int n)
n 番目の子ビューを返します。 |
int |
getViewCount()
このビュー内のビューの数を返します。 |
ViewFactory |
getViewFactory()
ビュー階層を供給している ViewFactory の実装を取り出します。 |
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)
ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final int BadBreakWeight
getBreakWeight(int, float, float)
,
GoodBreakWeight
,
ExcellentBreakWeight
,
ForcedBreakWeight
public static final int GoodBreakWeight
getBreakWeight(int, float, float)
,
BadBreakWeight
,
ExcellentBreakWeight
,
ForcedBreakWeight
public static final int ExcellentBreakWeight
getBreakWeight(int, float, float)
,
BadBreakWeight
,
GoodBreakWeight
,
ForcedBreakWeight
public static final int ForcedBreakWeight
getBreakWeight(int, float, float)
,
BadBreakWeight
,
GoodBreakWeight
,
ExcellentBreakWeight
public static final int X_AXIS
public static final int Y_AXIS
コンストラクタの詳細 |
public View(Element elem)
elem
- 表す要素メソッドの詳細 |
public View getParent()
public 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
- 描画のために割り当てられた領域paint(java.awt.Graphics, java.awt.Shape)
public void setParent(View parent)
super.setParent()
を呼び出さなければなりません。parent
- 新しい親。ビューが以前に追加された親から削除される場合は nullpublic int getViewCount()
getViewCount()
public View getView(int n)
n
- 取得するビューの番号 >= 0 && < getViewCount()public void removeAll()
public void remove(int i)
public void insert(int offs, View v)
offs
- ビューを挿入する位置のオフセット >= 0v
- ビューreplace(int, int, javax.swing.text.View[])
public void append(View v)
v
- ビューreplace(int, int, javax.swing.text.View[])
public void replace(int offset, int length, View[] views)
index
- 新規ビューを挿入するための、子ビューの開始インデックス。この値は 0 以上で、getViewCount 以下length
- 削除する現在の子ビューの数。この値は 0 以上で、(getViewCount() - offset) 以下views
- 追加する子ビュー。追加する子 (削除しやすい) がないことを示す場合は、null の可能性もあるpublic int getViewIndex(int pos, Position.Bias b)
pos
- 位置 >= 0public Shape getChildAllocation(int index, Shape a)
index
- 子のインデックス >= 0 && < getViewCount()a
- このビューに対する割り当てpublic int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
pos
- 変換対象の位置 >= 0a
- 描画のために割り当てられた領域direction
- キーボード上に通常ある矢印キーと見なすことができる、現在の位置からの方向。SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH、または SwingConstants.SOUTHBadLocationException
- IllegalArgumentException
- 方向が無効な場合public abstract Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
pos
- 変換対象の位置 >= 0a
- 描画のために割り当てられた領域b
- 位置が 2 つのビューの境界である場合のための、オフセットによって表される前の文字または次の文字へのバイアスBadLocationException
- 指定された位置が、関連するドキュメント内の有効な位置を表さない場合IllegalArgumentException
- 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 つのビューの境界である場合に、p0 によって表される直前の文字または次の文字へのバイアスp1
- 変換対象の位置 >= 0b1
- 位置が 2 つのビューの境界である場合に、p1 によって表される直前の文字または次の文字へのバイアスa
- 描画のために割り当てられた領域BadLocationException
- 指定された位置が、関連するドキュメント内の有効な位置を表さない場合IllegalArgumentException
- 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)
x
- X 座標 >= 0y
- Y 座標 >= 0a
- 描画のために割り当てられた領域public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
e
- 関連するドキュメントからの変更情報a
- ビューの現在の割り当てf
- ビューが子を持つ場合に再構築に使用するファクトリinsertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
public void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
e
- 関連するドキュメントからの変更情報a
- ビューの現在の割り当てf
- ビューが子を持つ場合に再構築に使用するファクトリremoveUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
e
- 関連するドキュメントからの変更情報a
- ビューの現在の割り当てf
- ビューが子を持つ場合に再構築に使用するファクトリchangedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
public Document getDocument()
getDocument()
public int getStartOffset()
getStartOffset()
public int getEndOffset()
getEndOffset()
public Element getElement()
getElement()
public Graphics getGraphics()
public AttributeSet getAttributes()
public View breakView(int axis, int offset, float pos, float len)
このメソッドはビュー自体を返すために実装され、それは分割できないデフォルトの動作を表します。ビューが分割をサポートする場合、返されるビューの開始オフセットは指定されたオフセットでなければならず、終了オフセットは分割されるビューの終了オフセット以下でなければなりません。
axis
- View.X_AXIS または View.Y_AXISoffset
- 分割されたフラグメントが占めるドキュメントモデル内の位置 >= 0。これは返されるフラグメントの開始オフセットになるpos
- 分割されたビューが占める軸に沿った位置 >= 0。これはタブの計算などで便利な場合があるlen
- 分割が必要な軸に沿った距離 >= 0ParagraphView
public View createFragment(int p0, int p1)
p0
- 開始オフセット >= 0。この値は要素の開始オフセット以上で、要素の終了オフセットより小さくなければならないp1
- 終了オフセット > p0。この値は要素の終了オフセット以下で、要素の開始オフセットより大きくなければならないLabelView
public int getBreakWeight(int axis, float pos, float len)
breakView
を呼び出すもっとも適切なビューを判断するために使用できます。たとえば、余白を含むテキストを表すビューは、余白を含まないビューよりも適切です。ウェイトが高いほど、分割にはより適切です。BadBreakWeight
以下の値は、分割すべきではありません。ForcedBreakWeight
以上の値は、分割しなければなりません。
このメソッドは、長さがビューの長さより長い場合 (ビュー全体がフラグメントを表す) を除いて BadBreakWeight
を返すデフォルトの動作を提供します。ビューが分割動作をサポートするように記述されていない限り、ビューを分割しようとするのは適切ではありません。分割をサポートするビューには LabelView
などがあります。分割ウェイトを使用するビューには ParagraphView
などがあります。
axis
- View.X_AXIS または View.Y_AXISpos
- 分割されたビューの開始の可能性のある位置 >= 0。これはタブ位置の計算に便利な場合があるlen
- 分割が必要な pos からの相対的な長さ >= 0LabelView
,
ParagraphView
,
BadBreakWeight
,
GoodBreakWeight
,
ExcellentBreakWeight
,
ForcedBreakWeight
public int getResizeWeight(int axis)
axis
- View.X_AXIS または View.Y_AXISpublic void setSize(float width, float height)
width
- 幅 >= 0height
- 高さ >= 0public Container getContainer()
public ViewFactory getViewFactory()
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
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)
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)
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)
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)
public Shape modelToView(int pos, Shape a) throws BadLocationException
pos
- 変換対象の位置 >= 0a
- 描画のために割り当てられた領域BadLocationException
- 指定された位置が、関連するドキュメント内の有効な位置を表さない場合modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)
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[])
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.