|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.awt.geom.RectangularShape
java.awt.geom.Rectangle2D
java.awt.Rectangle
javax.swing.text.DefaultCaret
public class DefaultCaret
Caret のデフォルトの実装です。キャレットは、関連する JTextComponent の CaretColor プロパティで指定された色の垂直線として描画されます。また、BlinkRate プロパティで指定した速さで点滅させることができます。
この実装は、非同期通知のソースが 2 つあることを前提とします。タイマースレッドは非同期にトリガされ、これにより、キャレットは最新のバウンディングボックスにペイントし直されます。また、キャレットはドキュメントが更新されるたびに変更を追跡します。通常、ドキュメントの更新は、マウスイベントまたはキーボードイベントによるイベントディスパッチスレッドにおいて発生します。キャレットの動作は、ドキュメントの同期的な更新でも非同期的な更新でも、UpdatePolicy プロパティによって制御されます。新しいキャレット位置の再ペイントは、必ずイベントスレッドに上で発生します。これは、modelToView の呼び出しがイベントスレッド上でのみ安全だからです。
キャレットは、インストール先のテキストコンポーネントでマウスおよびフォーカスリスナーとして振る舞い、キャレットのセマンティクスをそうしたイベントに基づいて定義します。セマンティクスを変更するには、リスナーのメソッドを実装し直します。デフォルトでは、マウスの第 1 ボタンを使ってフォーカスとキャレット位置を設定します。第 1 ボタンを使ってマウスポインタをドラッグすると、モデル内の隣接する選択部分を広げることができます。関連するテキストコンポーネントが編集可能な場合は、キャレットはフォーカスを得たときに可視になり、フォーカスを失ったときに不可視になります。
関連するテキストへの Highlighter 境界は、デフォルトでは選択部分を描画するために使用されます。選択部分の表示は、ハイライトに使用するペインタを提供することでカスタマイズできます。デフォルトでは、関連するテキストコンポーネントの SelectionColor プロパティで指定されたソリッド色で描画されます。これは、getSelectionHighlighter メソッドを実装し直すことで簡単に変更できます。
キャレットの外観は、paint メソッドを実装し直すことでカスタマイズできます。paint メソッドを変更する場合には、damage メソッドも実装し直して、キャレットの描画に使われる領域を描画し直してください。キャレットは、Rectangle クラスを拡張しているため、キャレットが最後に描画されたバウンディングボックスを保持しています。これによって、キャレットが移動したときに、モデルの更新とビューの修復の間で動作が不安定な modelToView メソッドを呼び出すことなく、スレッドに対して安全な方法で描画し直すことができます (modelToView メソッドでは、DocumentListener への配信の順序が保証されない)。
キャレット位置が変更されるとき、マジックキャレットの位置は null に設定されています。タイマーを使って、キャレット変更後の新しい位置を指定します。タイマーがトリガすると、マジックキャレットの位置がまだ null の場合、現在のキャレット位置にリセットされます。キャレット位置を変更し、マジックキャレットの位置をそのままにしておくアクションの場合はすべて、マジックキャレットの位置を覚え、カーソルを変更してから、マジックキャレットの位置をその元の位置に設定します。このメソッドには、マジックキャレットの位置を持続させる (オープンまたはダウンさせるなど) アクションだけがそれを知っていればよいという利点があります。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。JDK バージョン 1.4 以降、すべての JavaBeans™ の長期間の運用サポートは、java.beans パッケージに追加されています。詳細は、XMLEncoder を参照してください。
Caret| 入れ子のクラスの概要 |
|---|
| クラス java.awt.geom.Rectangle2D から継承された入れ子のクラス/インタフェース |
|---|
Rectangle2D.Double, Rectangle2D.Float |
| フィールドの概要 | |
|---|---|
static int |
ALWAYS_UPDATE
ドキュメントの更新がイベントディスパッチスレッドで行われるかどうかに関係なく、ドキュメントの変更に従ってキャレット位置が必ず更新されることを示します。 |
protected ChangeEvent |
changeEvent
モデルの変更を示すイベントです。 |
protected EventListenerList |
listenerList
イベントリスナーのリストです。 |
static int |
NEVER_UPDATE
削除のせいでドキュメントの長さが現在のキャレット位置よりも短くなる場合を除き、ドキュメントの更新に関係なく、ドキュメント内のキャレットの絶対位置が変わらないことを示します。 |
static int |
UPDATE_WHEN_ON_EDT
イベントディスパッチスレッドでドキュメントの変更が行われる場合にのみキャレット位置が更新されることを示します。 |
| クラス java.awt.Rectangle から継承されたフィールド |
|---|
height, width, x, y |
| クラス java.awt.geom.Rectangle2D から継承されたフィールド |
|---|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP |
| コンストラクタの概要 | |
|---|---|
DefaultCaret()
デフォルトのキャレットを構築します。 |
|
| メソッドの概要 | ||
|---|---|---|
void |
addChangeListener(ChangeListener l)
キャレットの移動を常に追跡するために、リスナーを追加します。 |
|
protected void |
adjustVisibility(Rectangle nloc)
必要に応じて、関連するビューをスクロールして、キャレットが見えるようにします。 |
|
protected void |
damage(Rectangle r)
キャレットを囲む領域を壊して、新しい位置に描画し直されるようにします。 |
|
void |
deinstall(JTextComponent c)
JTextComponent のインタフェースから UI が削除される時に呼び出されます。 |
|
boolean |
equals(Object obj)
このオブジェクトを指定されたオブジェクトと比較します。 |
|
protected void |
fireStateChanged()
このイベントタイプの通知先に登録されている、すべてのリスナーに通知を行います。 |
|
void |
focusGained(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを得たときに呼び出されます。 |
|
void |
focusLost(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを失ったときに呼び出されます。 |
|
int |
getBlinkRate()
キャレットの点滅間隔を返します。 |
|
ChangeListener[] |
getChangeListeners()
このキャレットに登録された、すべての変更リスナーからなる配列を返します。 |
|
protected JTextComponent |
getComponent()
このキャレットを使用するテキストエディタコンポーネントを返します。 |
|
int |
getDot()
キャレットの現在の位置を取り出します。 |
|
|
getListeners(Class<T> listenerType)
このキャレット上で FooListener として現在登録されている、すべてのオブジェクトからなる配列を返します。 |
|
Point |
getMagicCaretPosition()
保存されているキャレットの位置を返します。 |
|
int |
getMark()
マークの現在の位置を取り出します。 |
|
protected Highlighter.HighlightPainter |
getSelectionPainter()
ハイライタに使うペインタを返します。 |
|
int |
getUpdatePolicy()
ドキュメントの更新に対するキャレット移動ポリシーを取得します。 |
|
void |
install(JTextComponent c)
JTextComponent のインタフェースに UI がインストールされるときに呼び出されます。 |
|
boolean |
isActive()
キャレットが現在アクティブであるかどうかを判定します。 |
|
boolean |
isSelectionVisible()
現在の選択範囲が可視であるかどうかを判定します。 |
|
boolean |
isVisible()
キャレットが現在可視状態であるかどうかを示します。 |
|
void |
mouseClicked(MouseEvent e)
マウスがクリックされたときに呼び出されます。 |
|
void |
mouseDragged(MouseEvent e)
マウスポインタの現在位置に従って、キャレットを移動します。 |
|
void |
mouseEntered(MouseEvent e)
マウスがある領域に入ったときに呼び出されます。 |
|
void |
mouseExited(MouseEvent e)
マウスがある領域から出たときに呼び出されます。 |
|
void |
mouseMoved(MouseEvent e)
マウスが移動したときに呼び出されます。 |
|
void |
mousePressed(MouseEvent e)
このメソッドは、ボタン 1 がクリックされた場合に、関連するテキストコンポーネントへのフォーカスを要求し、キャレットの位置を設定するために実装されています。 |
|
void |
mouseReleased(MouseEvent e)
マウスボタンを離したときに呼び出されます。 |
|
protected void |
moveCaret(MouseEvent e)
viewToModel() を使用して、マウスイベントの座標からキャレットの移動を試みます。 |
|
void |
moveDot(int dot)
キャレットを別の位置に移動します。 |
|
void |
paint(Graphics g)
キャレットを垂直線として描画します。 |
|
protected void |
positionCaret(MouseEvent e)
viewToModel() を使用して、マウスイベントの座標からキャレットの位置の設定を試みます。 |
|
void |
removeChangeListener(ChangeListener l)
キャレットの移動を追跡しているリスナーを削除します。 |
|
protected void |
repaint()
キャレットを描画します。 |
|
void |
setBlinkRate(int rate)
キャレットの点滅間隔を設定します。 |
|
void |
setDot(int dot)
キャレットとマークの位置を設定します。 |
|
void |
setMagicCaretPosition(Point p)
キャレットの現在の位置を保存します。 |
|
void |
setSelectionVisible(boolean vis)
選択範囲の可視性を変更します。 |
|
void |
setUpdatePolicy(int policy)
ドキュメントの更新に対するキャレット移動ポリシーを設定します。 |
|
void |
setVisible(boolean e)
キャレットの可視性を設定し、キャレットをペイントし直します。 |
|
String |
toString()
この Rectangle およびその値を表す String 表現を返します。 |
|
| クラス java.awt.Rectangle から継承されたメソッド |
|---|
add, add, add, contains, contains, contains, contains, createIntersection, createUnion, getBounds, getBounds2D, getHeight, getLocation, getSize, getWidth, getX, getY, grow, inside, intersection, intersects, isEmpty, move, outcode, reshape, resize, setBounds, setBounds, setLocation, setLocation, setRect, setSize, setSize, translate, union |
| クラス java.awt.geom.Rectangle2D から継承されたメソッド |
|---|
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union |
| クラス java.awt.geom.RectangularShape から継承されたメソッド |
|---|
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal |
| クラス java.lang.Object から継承されたメソッド |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| インタフェース java.awt.Shape から継承されたメソッド |
|---|
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects |
| フィールドの詳細 |
|---|
public static final int UPDATE_WHEN_ON_EDT
setUpdatePolicy(int),
getUpdatePolicy(),
定数フィールド値public static final int NEVER_UPDATE
setUpdatePolicy(int),
getUpdatePolicy(),
定数フィールド値public static final int ALWAYS_UPDATE
setUpdatePolicy(int),
getUpdatePolicy(),
定数フィールド値protected EventListenerList listenerList
protected transient ChangeEvent changeEvent
| コンストラクタの詳細 |
|---|
public DefaultCaret()
| メソッドの詳細 |
|---|
public void setUpdatePolicy(int policy)
BACKSPACE を入力すると、キャレット位置の前にある文字が削除されたためにキャレットの絶対位置が減少します。場合によっては、キャレット位置の更新をオフにして、ドキュメントの更新に関係なく、ドキュメント位置におけるキャレットの絶対位置を同じままにしておくことが有効なこともあります。
次の更新ポリシーを設定できます。
NEVER_UPDATE: 削除のせいでドキュメントの長さが現在のキャレット位置よりも短くなる場合を除き、ドキュメントの更新に関係なく、ドキュメント内のキャレットの絶対位置が変わらないことを示します。ドキュメントの長さが現在のキャレット位置よりも短くなる場合は、ドキュメントの末尾に合わせてキャレット位置が調整されます。このポリシーの使用時は、キャレットは関連したビューをスクロールして、キャレット自体を可視状態にしておこうとはしません。ALWAYS_UPDATE: キャレットは常にドキュメントの変更を追跡します。通常の変更では、キャレットの現在位置の前またはその位置に挿入が行われると、キャレット位置が増加し、キャレットの現在位置の前で削除が行われると、キャレット位置が減少します。更新を元に戻したり、再実行したりする場合、キャレットは常に更新が行われた位置に移動します。また、キャレットは adjustVisibility メソッドを呼び出して、キャレット自体を可視状態にしておこうとします。UPDATE_WHEN_ON_EDT: ドキュメントの更新がイベントディスパッチスレッドに対して行われた場合は、ALWAYS_UPDATE のように動作し、他のスレッドに対して行われた場合は、NEVER_UPDATE のように動作します。
デフォルトのプロパティ値は UPDATE_WHEN_ON_EDT です。
policy - UPDATE_WHEN_ON_EDT、NEVER_UPDATE、ALWAYS_UPDATE のいずれかの値
IllegalArgumentException - 渡された値が無効な場合getUpdatePolicy(),
adjustVisibility(java.awt.Rectangle),
UPDATE_WHEN_ON_EDT,
NEVER_UPDATE,
ALWAYS_UPDATEpublic int getUpdatePolicy()
UPDATE_WHEN_ON_EDT、NEVER_UPDATE、ALWAYS_UPDATE のいずれかの値setUpdatePolicy(int),
UPDATE_WHEN_ON_EDT,
NEVER_UPDATE,
ALWAYS_UPDATEprotected final JTextComponent getComponent()
protected final void repaint()
このメソッドはスレッドに対して安全ですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。
protected void damage(Rectangle r)
r - キャレットの現在の位置paint(java.awt.Graphics)protected void adjustVisibility(Rectangle nloc)
nloc - スクロール先の新しい位置protected Highlighter.HighlightPainter getSelectionPainter()
protected void positionCaret(MouseEvent e)
e - マウスイベントprotected void moveCaret(MouseEvent e)
e - マウスイベントpublic void focusGained(FocusEvent e)
FocusListener 内の focusGainede - フォーカスイベントFocusListener.focusGained(java.awt.event.FocusEvent)public void focusLost(FocusEvent e)
FocusListener 内の focusLoste - フォーカスイベントFocusListener.focusLost(java.awt.event.FocusEvent)public void mouseClicked(MouseEvent e)
MouseListener 内の mouseClickede - マウスイベントMouseListener.mouseClicked(java.awt.event.MouseEvent)public void mousePressed(MouseEvent e)
MouseListener 内の mousePressede - マウスイベントMouseListener.mousePressed(java.awt.event.MouseEvent)public void mouseReleased(MouseEvent e)
MouseListener 内の mouseReleasede - マウスイベントMouseListener.mouseReleased(java.awt.event.MouseEvent)public void mouseEntered(MouseEvent e)
MouseListener 内の mouseEnterede - マウスイベントMouseListener.mouseEntered(java.awt.event.MouseEvent)public void mouseExited(MouseEvent e)
MouseListener 内の mouseExitede - マウスイベントMouseListener.mouseExited(java.awt.event.MouseEvent)public void mouseDragged(MouseEvent e)
MouseMotionListener 内の mouseDraggede - マウスイベントMouseMotionListener.mouseDragged(java.awt.event.MouseEvent)public void mouseMoved(MouseEvent e)
MouseMotionListener 内の mouseMovede - マウスイベントMouseMotionListener.mouseMoved(java.awt.event.MouseEvent)public void paint(Graphics g)
関連したドキュメントに複数のテキスト方向がある場合は、キャレットのバイアスを示すフラグが描画されます。これは、関連するドキュメントが AbstractDocument のサブクラスであり、かつ、BIDI 要素構造内に複数の BIDI レベルが存在する場合 (すなわち、テキストがテキスト自身に関連した複数の方向を持っている場合) にのみ発生します。
Caret 内の paintg - グラフィックスコンテキストdamage(java.awt.Rectangle)public void install(JTextComponent c)
Caret 内の installc - コンポーネントCaret.install(javax.swing.text.JTextComponent)public void deinstall(JTextComponent c)
Caret 内の deinstallc - コンポーネントCaret.deinstall(javax.swing.text.JTextComponent)public void addChangeListener(ChangeListener l)
Caret 内の addChangeListenerl - リスナーCaret.addChangeListener(javax.swing.event.ChangeListener)public void removeChangeListener(ChangeListener l)
Caret 内の removeChangeListenerl - リスナーCaret.removeChangeListener(javax.swing.event.ChangeListener)public ChangeListener[] getChangeListeners()
ChangeListener すべて。変更リスナーが登録されていない場合は空の配列addChangeListener(javax.swing.event.ChangeListener),
removeChangeListener(javax.swing.event.ChangeListener)protected void fireStateChanged()
EventListenerListpublic <T extends EventListener> T[] getListeners(Class<T> listenerType)
FooListener として現在登録されている、すべてのオブジェクトからなる配列を返します。FooListener の登録には、addFooListener メソッドが使用されます。
FooListener.class などのクラスリテラルを使用して、listenerType 引数を指定できます。たとえば以下のコードを使用して、DefaultCaret c を、その変更リスナーに照会できます。
ChangeListener[] cls = (ChangeListener[])(c.getListeners(ChangeListener.class));この種のリスナーが存在しない場合、このメソッドでは空の配列が返されます。
listenerType - 要求されるリスナーのタイプ。このパラメータは java.util.EventListener から派生するインタフェースを指定する
FooListener として登録されたすべてのオブジェクトからなる配列。この種のリスナーが追加されていない場合は空の配列
ClassCastException - listenerType で java.util.EventListener を実装するクラスやインタフェースを指定しない場合getChangeListeners()public void setSelectionVisible(boolean vis)
Caret 内の setSelectionVisiblevis - 新しい可視性public boolean isSelectionVisible()
Caret 内の isSelectionVisiblepublic boolean isActive()
このメソッドは、Caret が現在点滅状態にあるかどうかを返します。キャレットの点滅が現在オンまたはオフのどちらになっているかの情報は返しません。キャレットが現在ペイントされるかどうかを確認するには、isVisible メソッドを使用してください。
true、そうでない場合は falseisVisible()public boolean isVisible()
isActive は、キャレットが点滅状態にあるかどうかを示します。たとえば、キャレットを可視にできる場合、isVisible はキャレットが実際に可視状態かどうかを示します。
別の点滅するキャレットを描画する場合は、サブクラスで paint メソッドをオーバーライドし、そのメソッドが true を返した場合にのみキャレットをペイントします。
Caret 内の isVisibleCaret.isVisible(),
isActive()public void setVisible(boolean e)
isVisible および isActive との関係を理解することが大切です。このメソッドを true の値で呼び出すと、キャレットの点滅がアクティブになります。これを false に設定すると、キャレットの点滅が完全にオフになります。点滅がアクティブかどうかを確認するには、isActive を呼び出す必要があります。要するに、isActive はこのメソッドの適切な対応する get メソッドです。isVisible を使用すると、キャレットの現在の可視性、つまりキャレットが現在ペイントされるかどうかを取り出すことができます。この状態は、キャレットの点滅のオン/オフに伴って変わります。
次に、このメソッドを呼び出してあとで、isActive および isVisible の考えられる戻り値のリストを示します。
setVisible(true):
setVisible(false):
Caret 内の setVisiblee - 可視性指定子isActive(),
Caret.setVisible(boolean)public void setBlinkRate(int rate)
Caret 内の setBlinkRaterate - ミリ秒単位の間隔で、0 の場合は点滅を停止Caret.setBlinkRate(int)public int getBlinkRate()
Caret 内の getBlinkRateCaret.getBlinkRate()public int getDot()
Caret 内の getDotCaret.getDot()public int getMark()
Caret 内の getMarkCaret.getMark()public void setDot(int dot)
Caret 内の setDotdot - 位置 >= 0Caret.setDot(int)public void moveDot(int dot)
Caret 内の moveDotdot - 位置 >= 0Caret.moveDot(int)public void setMagicCaretPosition(Point p)
Caret 内の setMagicCaretPositionp - 位置getMagicCaretPosition()public Point getMagicCaretPosition()
Caret 内の getMagicCaretPositionCaret.setMagicCaretPosition(java.awt.Point)public boolean equals(Object obj)
Rectangle 内の equalsobj - このフォントと比較されるオブジェクト
true、そうでない場合は falseObject.hashCode(),
Hashtablepublic String toString()
Rectangle の記述: Rectangle およびその値を表す String 表現を返します。
Rectangle 内の toStringRectangle オブジェクトの座標とサイズの値を表す String
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。