|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.awt.geom.RectangularShape | +--java.awt.geom.Rectangle2D | +--java.awt.Rectangle | +--javax.swing.text.DefaultCaret
Caret のデフォルトの実装です。キャレットは、関連する JTextComponent の CaretColor プロパティで指定された色の垂直線として描画されます。また、BlinkRate プロパティで指定した速さで点滅させることができます。
この実装は、非同期通知のソースが 2 つあることを前提とします。タイマースレッドは非同期にトリガされ、これにより、キャレットは最新のバウンディングボックスに描画し直されます。また、キャレットはドキュメントが更新されるたびに変更を追跡します。通常、ドキュメントの更新は、マウスイベントまたはキーボードイベントによるイベントスレッドにおいて発生します。これ以外にも、ドキュメントを変更するその他のスレッドによって、更新が発生する場合があります。キャレットが非同期的な更新によって移動するかどうかは、AsynchronousMovement
プロパティによって決まります。デフォルトの動作では、非同期的な更新ではキャレットは移動しません。非同期な更新が許可されると、更新スレッドはリスナーに対して非同期的にキャレット位置の変更をトリガします。新しいキャレットの再描画は、必ず、イベントスレッド上で発生します。これは、modelToView
の呼び出しがイベントスレッド上においてのみ安全だからです。
キャレットは、インストール先のテキストコンポーネントでマウスおよびフォーカスリスナーとして振る舞い、キャレットのセマンティクスをそうしたイベントに基づいて定義します。セマンティクスを変更するには、リスナーのメソッドを実装し直します。デフォルトでは、マウスの第 1 ボタンを使ってフォーカスとキャレット位置を設定します。第 1 ボタンを使ってマウスポインタをドラッグすると、モデル内の隣接する選択部分を広げることができます。関連するテキストコンポーネントが編集可能な場合は、キャレットはフォーカスを得たときに可視になり、フォーカスを失ったときに不可視になります。
関連するテキストへの Highlighter 境界は、デフォルトでは選択部分を描画するために使用されます。選択部分の表示は、ハイライトに使用するペインタを提供することでカスタマイズできます。デフォルトでは、関連するテキストコンポーネントの SelectionColor
プロパティで指定されたソリッド色で描画されます。これは、getSelectionPainter メソッドを実装し直すことで簡単に変更できます。
キャレットの外観は、paint メソッドを実装し直すことでカスタマイズできます。paint メソッドを変更する場合には、damage メソッドも実装し直して、キャレットの描画に使われる領域を描画し直してください。キャレットは、Rectangle クラスを拡張しているため、キャレットが最後に描画されたバウンディングボックスを保持しています。これによって、キャレットが移動したときに、モデルの更新とビューの修復の間で動作が不安定な modelToView メソッドを呼び出すことなく、スレッドセーフな方法で描画し直すことができます (modelToView メソッドでは、DocumentListener への配信の順序が保証されない)。
キャレット位置が変更されるとき、マジックキャレットの位置は null に設定されています。タイマーを使って、キャレット変更後の新しい位置を指定します。タイマーがトリガすると、マジックキャレットの位置がまだ null の場合、現在のキャレット位置にリセットされます。キャレット位置を変更し、マジックキャレットの位置をそのままにしておくアクションの場合はすべて、マジックキャレットの位置を覚え、カーソルを変更してから、マジックキャレットの位置をその元の位置に設定します。このメソッドには、マジックキャレットの位置を持続させる (オープンまたはダウンさせるなど) アクションだけがそれを知っていればよいという利点があります。
警告:
このクラスの直列化されたオブジェクトは、今後の Swing のリリースとは互換性を持ちません。現在の直列化サポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。1.4 では、すべての JavaBeansTM の長期運用サポートが、 java.beans
パッケージに追加されました。XMLEncoder
を参照してください。
Caret
入れ子クラスの概要 |
クラス java.awt.geom.Rectangle2D から継承した入れ子クラス |
Rectangle2D.Double, Rectangle2D.Float |
フィールドの概要 | |
protected ChangeEvent |
changeEvent
モデルの変更を示すイベントです。 |
protected EventListenerList |
listenerList
イベントリスナーのリストです。 |
クラス 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()
キャレットの現在の位置を取り出します。 |
EventListener[] |
getListeners(Class listenerType)
このキャレット上で FooListener として現在登録されている、すべてのオブジェクトからなる配列を返します。 |
Point |
getMagicCaretPosition()
保存されているキャレットの位置を返します。 |
int |
getMark()
マークの現在の位置を取り出します。 |
protected Highlighter.HighlightPainter |
getSelectionPainter()
ハイライタに使うペインタを返します。 |
void |
install(JTextComponent c)
JTextComponent のインタフェースに UI がインストールされるときに呼び出されます。 |
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 |
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 |
フィールドの詳細 |
protected EventListenerList listenerList
protected transient ChangeEvent changeEvent
コンストラクタの詳細 |
public DefaultCaret()
メソッドの詳細 |
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 EventListener[] getListeners(Class 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 isVisible()
Caret
内の isVisible
Caret.isVisible()
public void setVisible(boolean e)
Caret
内の setVisible
e
- 可視性指定子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
public String toString()
Rectangle
の記述: Rectangle
およびその値を表す String
表現を返します。
Rectangle
内の toString
Rectangle
オブジェクトの座標とサイズの値を表す String
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.