|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.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_UPDATE
public int getUpdatePolicy()
UPDATE_WHEN_ON_EDT
、NEVER_UPDATE
、ALWAYS_UPDATE
のいずれかの値setUpdatePolicy(int)
,
UPDATE_WHEN_ON_EDT
,
NEVER_UPDATE
,
ALWAYS_UPDATE
protected 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
内の focusGained
e
- フォーカスイベントFocusListener.focusGained(java.awt.event.FocusEvent)
public void focusLost(FocusEvent e)
FocusListener
内の focusLost
e
- フォーカスイベントFocusListener.focusLost(java.awt.event.FocusEvent)
public void mouseClicked(MouseEvent e)
MouseListener
内の mouseClicked
e
- マウスイベントMouseListener.mouseClicked(java.awt.event.MouseEvent)
public void mousePressed(MouseEvent e)
MouseListener
内の mousePressed
e
- マウスイベントMouseListener.mousePressed(java.awt.event.MouseEvent)
public void mouseReleased(MouseEvent e)
MouseListener
内の mouseReleased
e
- マウスイベントMouseListener.mouseReleased(java.awt.event.MouseEvent)
public void mouseEntered(MouseEvent e)
MouseListener
内の mouseEntered
e
- マウスイベントMouseListener.mouseEntered(java.awt.event.MouseEvent)
public void mouseExited(MouseEvent e)
MouseListener
内の mouseExited
e
- マウスイベントMouseListener.mouseExited(java.awt.event.MouseEvent)
public void mouseDragged(MouseEvent e)
MouseMotionListener
内の mouseDragged
e
- マウスイベントMouseMotionListener.mouseDragged(java.awt.event.MouseEvent)
public void mouseMoved(MouseEvent e)
MouseMotionListener
内の mouseMoved
e
- マウスイベントMouseMotionListener.mouseMoved(java.awt.event.MouseEvent)
public void paint(Graphics g)
関連したドキュメントに複数のテキスト方向がある場合は、キャレットのバイアスを示すフラグが描画されます。これは、関連するドキュメントが AbstractDocument のサブクラスであり、かつ、BIDI 要素構造内に複数の BIDI レベルが存在する場合 (すなわち、テキストがテキスト自身に関連した複数の方向を持っている場合) にのみ発生します。
Caret
内の paint
g
- グラフィックスコンテキストdamage(java.awt.Rectangle)
public void install(JTextComponent c)
Caret
内の install
c
- コンポーネントCaret.install(javax.swing.text.JTextComponent)
public void deinstall(JTextComponent c)
Caret
内の deinstall
c
- コンポーネントCaret.deinstall(javax.swing.text.JTextComponent)
public void addChangeListener(ChangeListener l)
Caret
内の addChangeListener
l
- リスナーCaret.addChangeListener(javax.swing.event.ChangeListener)
public void removeChangeListener(ChangeListener l)
Caret
内の removeChangeListener
l
- リスナーCaret.removeChangeListener(javax.swing.event.ChangeListener)
public ChangeListener[] getChangeListeners()
ChangeListener
すべて。変更リスナーが登録されていない場合は空の配列addChangeListener(javax.swing.event.ChangeListener)
,
removeChangeListener(javax.swing.event.ChangeListener)
protected void fireStateChanged()
EventListenerList
public <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
内の setSelectionVisible
vis
- 新しい可視性public boolean isSelectionVisible()
Caret
内の isSelectionVisible
public boolean isActive()
このメソッドは、Caret
が現在点滅状態にあるかどうかを返します。キャレットの点滅が現在オンまたはオフのどちらになっているかの情報は返しません。キャレットが現在ペイントされるかどうかを確認するには、isVisible
メソッドを使用してください。
true
、そうでない場合は false
isVisible()
public boolean isVisible()
isActive
は、キャレットが点滅状態にあるかどうかを示します。たとえば、キャレットを可視にできる場合、isVisible
はキャレットが実際に可視状態かどうかを示します。
別の点滅するキャレットを描画する場合は、サブクラスで paint メソッドをオーバーライドし、そのメソッドが true を返した場合にのみキャレットをペイントします。
Caret
内の isVisible
Caret.isVisible()
,
isActive()
public void setVisible(boolean e)
isVisible
および isActive
との関係を理解することが大切です。このメソッドを true
の値で呼び出すと、キャレットの点滅がアクティブになります。これを false
に設定すると、キャレットの点滅が完全にオフになります。点滅がアクティブかどうかを確認するには、isActive
を呼び出す必要があります。要するに、isActive
はこのメソッドの適切な対応する get メソッドです。isVisible
を使用すると、キャレットの現在の可視性、つまりキャレットが現在ペイントされるかどうかを取り出すことができます。この状態は、キャレットの点滅のオン/オフに伴って変わります。
次に、このメソッドを呼び出してあとで、isActive
および isVisible
の考えられる戻り値のリストを示します。
setVisible(true)
:
setVisible(false)
:
Caret
内の setVisible
e
- 可視性指定子isActive()
,
Caret.setVisible(boolean)
public void setBlinkRate(int rate)
Caret
内の setBlinkRate
rate
- ミリ秒単位の間隔で、0 の場合は点滅を停止Caret.setBlinkRate(int)
public int getBlinkRate()
Caret
内の getBlinkRate
Caret.getBlinkRate()
public int getDot()
Caret
内の getDot
Caret.getDot()
public int getMark()
Caret
内の getMark
Caret.getMark()
public void setDot(int dot)
Caret
内の setDot
dot
- 位置 >= 0Caret.setDot(int)
public void moveDot(int dot)
Caret
内の moveDot
dot
- 位置 >= 0Caret.moveDot(int)
public void setMagicCaretPosition(Point p)
Caret
内の setMagicCaretPosition
p
- 位置getMagicCaretPosition()
public Point getMagicCaretPosition()
Caret
内の getMagicCaretPosition
Caret.setMagicCaretPosition(java.awt.Point)
public boolean equals(Object obj)
Rectangle
内の equals
obj
- このフォントと比較されるオブジェクト
true
、そうでない場合は false
Object.hashCode()
,
Hashtable
public String toString()
Rectangle
の記述: Rectangle
およびその値を表す String
表現を返します。
Rectangle
内の toString
Rectangle
オブジェクトの座標とサイズの値を表す 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 も参照してください。