|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 Version 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)
UI が JTextComponent のインタフェースから削除されたときに呼び出されます。 |
|
boolean |
equals(Object obj)
このオブジェクトを指定されたオブジェクトと比較します。 |
|
protected void |
fireStateChanged()
通知の配信対象を、指定されたイベント型で登録したすべてのリスナーに通知します。 |
|
void |
focusGained(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを得たときに呼び出されます。 |
|
void |
focusLost(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを失ったときに呼び出されます。 |
|
int |
getBlinkRate()
キャレットの点滅間隔を取得します。 |
|
ChangeListener[] |
getChangeListeners()
このキャレットに登録された、すべての変更リスナーからなる配列を返します。 |
|
protected JTextComponent |
getComponent()
このキャレットを使用するテキストエディタコンポーネントを返します。 |
|
int |
getDot()
キャレットの現在の位置を取り出します。 |
|
Position.Bias |
getDotBias()
キャレットの位置のバイアスを返します。 |
|
|
getListeners(Class<T> listenerType)
このキャレットに FooListener として現在登録されているすべてのオブジェクトの配列を返します。 |
|
Point |
getMagicCaretPosition()
保存されているキャレットの位置を返します。 |
|
int |
getMark()
マークの現在の位置を取り出します。 |
|
Position.Bias |
getMarkBias()
マークのバイアスを返します。 |
|
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 |
moveDot(int dot,
Position.Bias dotBias)
指定されたバイアスを使って、キャレット位置を指定された位置に移動します。 |
|
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 |
setDot(int dot,
Position.Bias dotBias)
指定されたバイアスを使って、キャレット位置を設定し、指定された位置をマークします。 |
|
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 メソッドは違います。詳細は、「How to Use Threads」を参照してください。
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
- 位置は 0 以上setDot(int, Position.Bias)
,
Caret.setDot(int)
public void moveDot(int dot)
Caret
内の moveDot
dot
- 位置は 0 以上moveDot(int, javax.swing.text.Position.Bias)
,
Caret.moveDot(int)
public void moveDot(int dot, Position.Bias dotBias)
dot
- 位置は 0 以上dotBias
- 位置のバイアス (null
以外)
IllegalArgumentException
- バイアスが null
の場合Caret.moveDot(int)
public void setDot(int dot, Position.Bias dotBias)
dot
- 位置は 0 以上dotBias
- 位置のバイアス (null
以外)
IllegalArgumentException
- バイアスが null
の場合Caret.setDot(int)
public Position.Bias getDotBias()
public Position.Bias getMarkBias()
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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。