JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing.text
クラス DefaultCaret

java.lang.Object
  |
  +--java.awt.geom.RectangularShape
        |
        +--java.awt.geom.Rectangle2D
              |
              +--java.awt.Rectangle
                    |
                    +--javax.swing.text.DefaultCaret
すべての実装インタフェース:
Caret, Cloneable, EventListener, FocusListener, MouseListener, MouseMotionListener, Serializable, Shape
直系の既知のサブクラス:
BasicTextUI.BasicCaret

public class DefaultCaret
extends Rectangle
implements Caret, FocusListener, MouseListener, MouseMotionListener

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
 

フィールドの詳細

listenerList

protected EventListenerList listenerList
イベントリスナーのリストです。


changeEvent

protected transient ChangeEvent changeEvent
モデルの変更を示すイベントです。イベントの専用 (読み込み専用) 状態がソースプロパティなので、モデルのインスタンスごとに ChangeEvent が 1 つだけ必要です。ここで生成されるイベントのソースは、常に「this」です。

コンストラクタの詳細

DefaultCaret

public DefaultCaret()
デフォルトのキャレットを構築します。

メソッドの詳細

getComponent

protected final JTextComponent getComponent()
このキャレットを使用するテキストエディタコンポーネントを返します。

戻り値:
コンポーネント

repaint

protected final void repaint()
キャレットを描画します。描画し直す領域は、キャレットのバウンディングボックス (キャレットの矩形、つまり this) です。

このメソッドはスレッドセーフですが、ほとんどの Swing メソッドは違います。詳細は、「Threads and Swing」を参照してください。


damage

protected void damage(Rectangle r)
キャレットを囲む領域を壊して、新しい位置に描画し直されるようにします。paint() の実装をやり直した場合は、このメソッドも実装し直してください。このメソッドは、キャレットの境界 (x、y、幅、高さ) を更新します。

パラメータ:
r - キャレットの現在の位置
関連項目:
paint(java.awt.Graphics)

adjustVisibility

protected void adjustVisibility(Rectangle nloc)
必要に応じて、関連するビューをスクロールして、キャレットが見えるようにします。この操作の処理方法はポリシーによって変わるので、メソッドの実装をやり直して動作を変更してもかまいません。デフォルトでは、関連するコンポーネントで scrollRectToVisible メソッドが呼び出されます。

パラメータ:
nloc - スクロール先の新しい位置

getSelectionPainter

protected Highlighter.HighlightPainter getSelectionPainter()
ハイライタに使うペインタを返します。

戻り値:
ペインタ

positionCaret

protected void positionCaret(MouseEvent e)
viewToModel() を使用して、マウスイベントの座標からキャレットの位置の設定を試みます。

パラメータ:
e - マウスイベント

moveCaret

protected void moveCaret(MouseEvent e)
viewToModel() を使用して、マウスイベントの座標からキャレットの移動を試みます。ドットとマークの位置が異なる場合は、範囲の選択になります。

パラメータ:
e - マウスイベント

focusGained

public void focusGained(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを得たときに呼び出されます。編集可能なコンポーネントのキャレットを可視に設定するために実装されています。

定義:
インタフェース FocusListener 内の focusGained
パラメータ:
e - フォーカスイベント
関連項目:
FocusListener.focusGained(java.awt.event.FocusEvent)

focusLost

public void focusLost(FocusEvent e)
キャレットを含むコンポーネントがフォーカスを失ったときに呼び出されます。キャレットの可視属性を false に設定するために実装されています。

定義:
インタフェース FocusListener 内の focusLost
パラメータ:
e - フォーカスイベント
関連項目:
FocusListener.focusLost(java.awt.event.FocusEvent)

mouseClicked

public void mouseClicked(MouseEvent e)
マウスがクリックされたときに呼び出されます。ボタン 1 がクリックされた場合、ダブルクリックでは単語を、トリプルクリックでは現在の行 (1 行) を選択します。

定義:
インタフェース MouseListener 内の mouseClicked
パラメータ:
e - マウスイベント
関連項目:
MouseListener.mouseClicked(java.awt.event.MouseEvent)

mousePressed

public void mousePressed(MouseEvent e)
このメソッドは、ボタン 1 がクリックされた場合に、関連するテキストコンポーネントへのフォーカスを要求し、キャレットの位置を設定するために実装されています。Shift キーを押したままだと、キャレットは選択範囲内に移動されることもあります。押していなければ、キャレットの位置は新しい位置に設定されます。コンポーネントが有効になっていない場合は、フォーカスの要求は出されません。

定義:
インタフェース MouseListener 内の mousePressed
パラメータ:
e - マウスイベント
関連項目:
MouseListener.mousePressed(java.awt.event.MouseEvent)

mouseReleased

public void mouseReleased(MouseEvent e)
マウスボタンを離したときに呼び出されます。

定義:
インタフェース MouseListener 内の mouseReleased
パラメータ:
e - マウスイベント
関連項目:
MouseListener.mouseReleased(java.awt.event.MouseEvent)

mouseEntered

public void mouseEntered(MouseEvent e)
マウスがある領域に入ったときに呼び出されます。

定義:
インタフェース MouseListener 内の mouseEntered
パラメータ:
e - マウスイベント
関連項目:
MouseListener.mouseEntered(java.awt.event.MouseEvent)

mouseExited

public void mouseExited(MouseEvent e)
マウスがある領域から出たときに呼び出されます。

定義:
インタフェース MouseListener 内の mouseExited
パラメータ:
e - マウスイベント
関連項目:
MouseListener.mouseExited(java.awt.event.MouseEvent)

mouseDragged

public void mouseDragged(MouseEvent e)
マウスポインタの現在位置に従って、キャレットを移動します。事実上、選択範囲を延長することになります。デフォルトでは、マウスボタン 1 をクリックした場合のみ実行されます。

定義:
インタフェース MouseMotionListener 内の mouseDragged
パラメータ:
e - マウスイベント
関連項目:
MouseMotionListener.mouseDragged(java.awt.event.MouseEvent)

mouseMoved

public void mouseMoved(MouseEvent e)
マウスが移動したときに呼び出されます。

定義:
インタフェース MouseMotionListener 内の mouseMoved
パラメータ:
e - マウスイベント
関連項目:
MouseMotionListener.mouseMoved(java.awt.event.MouseEvent)

paint

public void paint(Graphics g)
キャレットを垂直線として描画します。この実装をやり直した場合は、damage メソッドの実装もやり直してください。これは、damage メソッドが、キャレットの形状を垂直線と仮定しているからです。キャレットの色は、getCaretColor() の戻り値に従って設定します。

関連したドキュメントに複数のテキスト方向がある場合は、キャレットのバイアスを示すフラグが描画されます。これは、関連するドキュメントが AbstractDocument のサブクラスであり、かつ、BIDI 要素構造内に複数の BIDI レベルが存在する場合 (すなわち、テキストがテキスト自身に関連した複数の方向を持っている場合) にのみ発生します。

定義:
インタフェース Caret 内の paint
パラメータ:
g - グラフィックスコンテキスト
関連項目:
damage(java.awt.Rectangle)

install

public void install(JTextComponent c)
JTextComponent のインタフェースに UI がインストールされるときに呼び出されます。このインタフェースの実装によってナビゲートされる、モデルへのアクセスを可能にするために使用できます。dot と mark を 0 に設定し、ドキュメント、プロパティの変更、フォーカス、マウス、およびマウス移動のリスナーを生成します。

定義:
インタフェース Caret 内の install
パラメータ:
c - コンポーネント
関連項目:
Caret.install(javax.swing.text.JTextComponent)

deinstall

public void deinstall(JTextComponent c)
JTextComponent のインタフェースから UI を削除している時に呼び出されます。このメソッドを使うと、接続されていたリスナーの登録をすべて解除できます。

定義:
インタフェース Caret 内の deinstall
パラメータ:
c - コンポーネント
関連項目:
Caret.deinstall(javax.swing.text.JTextComponent)

addChangeListener

public void addChangeListener(ChangeListener l)
キャレットの移動を常に追跡するために、リスナーを追加します。

定義:
インタフェース Caret 内の addChangeListener
パラメータ:
l - リスナー
関連項目:
Caret.addChangeListener(javax.swing.event.ChangeListener)

removeChangeListener

public void removeChangeListener(ChangeListener l)
キャレットの移動を追跡しているリスナーを削除します。

定義:
インタフェース Caret 内の removeChangeListener
パラメータ:
l - リスナー
関連項目:
Caret.removeChangeListener(javax.swing.event.ChangeListener)

getChangeListeners

public ChangeListener[] getChangeListeners()
このキャレットに登録された、すべての変更リスナーからなる配列を返します。

戻り値:
このキャレットの ChangeListener すべて。変更リスナーが登録されていない場合は空の配列
導入されたバージョン:
1.4
関連項目:
addChangeListener(javax.swing.event.ChangeListener), removeChangeListener(javax.swing.event.ChangeListener)

fireStateChanged

protected void fireStateChanged()
このイベントタイプの通知先に登録されている、すべてのリスナーに通知を行います。イベントのインスタンスは、fire メソッドに渡されたパラメータを使用して簡単に生成されます。リスナーのリストは、最後から先頭に向かって処理されます。

関連項目:
EventListenerList

getListeners

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 - listenerTypejava.util.EventListener を実装するクラスやインタフェースを指定しない場合
導入されたバージョン:
1.3
関連項目:
getChangeListeners()

setSelectionVisible

public void setSelectionVisible(boolean vis)
選択範囲の可視性を変更します。

定義:
インタフェース Caret 内の setSelectionVisible
パラメータ:
vis - 新しい可視性

isSelectionVisible

public boolean isSelectionVisible()
現在の選択範囲が可視であるかどうかを判定します。

定義:
インタフェース Caret 内の isSelectionVisible
戻り値:
選択範囲が可視の場合は true

isVisible

public boolean isVisible()
キャレットが現在可視であるかどうかを判定します。

定義:
インタフェース Caret 内の isVisible
戻り値:
可視の場合は true、そうでない場合は false
関連項目:
Caret.isVisible()

setVisible

public void setVisible(boolean e)
キャレットの可視性を設定し、キャレットを描画し直します。

定義:
インタフェース Caret 内の setVisible
パラメータ:
e - 可視性指定子
関連項目:
Caret.setVisible(boolean)

setBlinkRate

public void setBlinkRate(int rate)
キャレットの点滅間隔を設定します。

定義:
インタフェース Caret 内の setBlinkRate
パラメータ:
rate - ミリ秒単位の間隔で、0 の場合は点滅を停止
関連項目:
Caret.setBlinkRate(int)

getBlinkRate

public int getBlinkRate()
キャレットの点滅間隔を返します。

定義:
インタフェース Caret 内の getBlinkRate
戻り値:
ミリ秒単位の遅延。0 の場合、キャレットの点滅はなし
関連項目:
Caret.getBlinkRate()

getDot

public int getDot()
キャレットの現在の位置を取り出します。

定義:
インタフェース Caret 内の getDot
戻り値:
位置 >= 0
関連項目:
Caret.getDot()

getMark

public int getMark()
マークの現在の位置を取り出します。選択範囲がある場合、dot と mark は同じにはなりません。

定義:
インタフェース Caret 内の getMark
戻り値:
位置 >= 0
関連項目:
Caret.getMark()

setDot

public void setDot(int dot)
キャレットとマークの位置を設定します。選択範囲が、暗黙のうちにゼロに設定されます。

定義:
インタフェース Caret 内の setDot
パラメータ:
dot - 位置 >= 0
関連項目:
Caret.setDot(int)

moveDot

public void moveDot(int dot)
キャレットを別の位置に移動します。

定義:
インタフェース Caret 内の moveDot
パラメータ:
dot - 位置 >= 0
関連項目:
Caret.moveDot(int)

setMagicCaretPosition

public void setMagicCaretPosition(Point p)
キャレットの現在の位置を保存します。キャレットが上下に動き、終端位置が均等でない行の間を移動する場合に使用します。

定義:
インタフェース Caret 内の setMagicCaretPosition
パラメータ:
p - 位置
関連項目:
getMagicCaretPosition()

getMagicCaretPosition

public Point getMagicCaretPosition()
保存されているキャレットの位置を返します。

定義:
インタフェース Caret 内の getMagicCaretPosition
戻り値:
#setMagicCaretPosition を参照する位置
関連項目:
Caret.setMagicCaretPosition(java.awt.Point)

equals

public boolean equals(Object obj)
このオブジェクトを指定されたオブジェクトと比較します。矩形を比較するというスーパークラスの動作は必要ないため、Object 動作に変更されます。

オーバーライド:
クラス Rectangle 内の equals
パラメータ:
obj - このフォントと比較されるオブジェクト
戻り値:
オブジェクトが等しい場合は true、そうでない場合は false

toString

public String toString()
クラス Rectangle の記述:
この Rectangle およびその値を表す String 表現を返します。

オーバーライド:
クラス Rectangle 内の toString
戻り値:
この Rectangle オブジェクトの座標とサイズの値を表す String

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.