JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.plaf.basic
クラス BasicTextUI

java.lang.Object
  |
  +--javax.swing.plaf.ComponentUI
        |
        +--javax.swing.plaf.TextUI
              |
              +--javax.swing.plaf.basic.BasicTextUI
すべての実装インタフェース:
ViewFactory
直系の既知のサブクラス:
BasicEditorPaneUI, BasicTextAreaUI, BasicTextFieldUI, DefaultTextUI

public abstract class BasicTextUI
extends TextUI
implements ViewFactory

テキストコンポーネントの Look & Feel の基礎となるクラスです。このクラスは、JTextComponent の拡張の Look & Feel を作成するときに便利な、エディタのビューおよびコントローラの基本的なサービスを提供します。

多くの場合、状態は関連する JTextComponent にバウンドプロパティとして保持されており、UI では各プロパティのデフォルトの値がインストールされます。このデフォルトの動作により、すべてのプロパティに対して値がインストールされますが、通常、Look & Feel の実装ではさらに多くのことが行われます。通常、Look & Feel の実装により、少なくともキーバインディングがインストールされます。

また、JTextComponent に関連した Document が AbstractDocument のサブクラスである場合、このクラスは並行サポートも提供します。View または View 階層へのアクセスは、モデルを変更するスレッドと、描画したりモデルとビュー間の座標変換を行なったりするための Swing イベントスレッドとの間で直列化されます。ルートビューにアクセスするには、最初に AbstractDocument の読み込みロックを取得して、そのロックを最終ブロックで解放する必要があります。

定義する必要がある重要なメソッドは、UIManager からデフォルトの値を取り出すために使われるキーの基礎である getPropertyPrefix() メソッドです。取得した文字列は、名前の特定の Look & Feel 部分 (Metal、Motif など) のない TextUI の型 (TextField、TextArea など) を反映します。

モデルのビューを構築するには、次に示す方法のどれかを使います。

  1. 1 つの方法は、単純に UI で ViewFactory インタフェースを定義し直すことです。デフォルトでは、この UI はそれ自体が View の実装のファクトリとして動作します。これは、単純なファクトリに便利です。この方法を実行するには、create(javax.swing.text.Element) メソッドを実装し直します。
  2. さらに複雑なドキュメントを作成する場合の一般的な方法は、EditorKit の実装がファクトリを返すようにすることです。EditorKit はあるドキュメントを維持するために必要なものをすべて結び付けるので、通常、ファクトリは重要な役割を担います。この場合、ファクトリは EditorKit の実装によって作成されます。
  3. あまり一般的ではない方法として、UI の実装にファクトリの別のオブジェクトを作成させる方法があります。そのためには、ファクトリを返すように ViewFactory.create(javax.swing.text.Element) メソッドを実装し直す必要があります。

警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。


内部クラスの概要
static class BasicTextUI.BasicCaret
           
static class BasicTextUI.BasicHighlighter
           
 
コンストラクタの概要
BasicTextUI()
          新しい UI を作成します。
 
メソッドの概要
 View create(Element elem)
          要素のビューを作成します。
 View create(Element elem, int p0, int p1)
          要素のビューを作成します。
protected  Caret createCaret()
          キャレットに使うオブジェクトを作成します。
protected  Highlighter createHighlighter()
          ハイライトを追加するために使うオブジェクトを作成します。
protected  Keymap createKeymap()
          テキストコンポーネントに使うキーマップを作成し、それに必要なバインディングをインストールします。
 void damageRange(JTextComponent tc, int p0, int p1)
          モデルの指定された部分に対応するビューの部分がペイントし直されます。
 void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
          モデル内の指定された一部分に対応するビューの部分が描画し直されます。
protected  JTextComponent getComponent()
          この UI の実装に関連したテキストコンポーネントを返します。
 EditorKit getEditorKit(JTextComponent tc)
          UI の EditorKit を返します。
protected  String getKeymapName()
          この UI にデフォルトでインストールまたは使用されるキーマップの名前を取得します。
 Dimension getMaximumSize(JComponent c)
          エディタコンポーネントの最大サイズを返します。
 Dimension getMinimumSize(JComponent c)
          エディタコンポーネントの最小サイズを返します。
 int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet)
          キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。
 Dimension getPreferredSize(JComponent c)
          エディタコンポーネントの適切なサイズを取得します。
protected abstract  String getPropertyPrefix()
          UIManager を使ってプロパティを参照するためのキーとして使われる名前を返します。
 View getRootView(JTextComponent tc)
          モデルが空間的にどのように表現されているかを判定するためにトラバースすることのできる、関連するテキストコンポーネント (すなわち階層のルート) を割り当てられた View を返します。
protected  Rectangle getVisibleEditorRect()
          ルート View に指定する割り当てを返します。
protected  void installDefaults()
          フォント、フォアグラウンド、バックグラウンド、キャレットの色、選択の色、選択されたテキストの色、無効になったテキストの色、ボーダの色などのコンポーネントプロパティを初期化します。
protected  void installKeyboardActions()
           
protected  void installListeners()
          UI のリスナーをインストールします。
 void installUI(JComponent c)
          コンポーネントの UI をインストールします。
protected  void modelChanged()
          モデルの変更にフラグを立てます。
 Rectangle modelToView(JTextComponent tc, int pos)
          モデル内の指定された位置を、ビュー座標体系内の場所に変換します。
 Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias)
          モデル内の指定された位置を、ビュー座標体系内の場所に変換します。
 void paint(Graphics g, JComponent c)
          インタフェースをペイントします。
protected  void paintBackground(Graphics g)
          ビューのバックグラウンドをペイントします。
protected  void paintSafely(Graphics g)
          このスレッドのビューからモデルが変更されないという保証付きで、安全にインタフェースをペイントします。
protected  void propertyChange(PropertyChangeEvent evt)
          関連する JTextComponent でバウンドプロパティが変更されたときに呼び出されます。
protected  void setView(View v)
          ビュー階層の現在のルートを設定し、invalidate() を呼び出します。
protected  void uninstallDefaults()
          明示的にオーバーライドされていないコンポーネントのプロパティを null に設定します。
protected  void uninstallKeyboardActions()
           
protected  void uninstallListeners()
          UI のリスナーをアンインストールします。
 void uninstallUI(JComponent c)
          コンポーネントの UI をアンインストールします。
 void update(Graphics g, JComponent c)
          スーパークラスは制御不可能な方法でバックグラウンドをペイントします。
 int viewToModel(JTextComponent tc, Point pt)
          ビュー座標体系内の指定された位置を、モデル内の最も近い場所に変換します。
 int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
          ビュー座標体系内の指定された位置を、モデル内の最も近い場所に変換します。
 
クラス javax.swing.plaf.ComponentUI から継承したメソッド
contains, createUI, getAccessibleChild, getAccessibleChildrenCount
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

BasicTextUI

public BasicTextUI()
新しい UI を作成します。
メソッドの詳細

createCaret

protected Caret createCaret()
キャレットに使うオブジェクトを作成します。デフォルトでは、BasicCaret のインスタンスが生成されます。このメソッドを定義し直すと、InputPosition インタフェースを実装するほかのクラス、または JCaret のサブクラスを提供できます。
戻り値:
キャレットオブジェクト

createHighlighter

protected Highlighter createHighlighter()
ハイライトを追加するために使うオブジェクトを作成します。デフォルトでは、BasicHighlighter のインスタンスが生成されます。このメソッドを定義し直すと、Highlighter インタフェースを実装するほかのクラス、または DefaultHighlighter のサブクラスを提供できます。
戻り値:
ハイライタ

getKeymapName

protected String getKeymapName()
この UI にデフォルトでインストールまたは使用されるキーマップの名前を取得します。これは、クラス名に基づいて名前を作成するために実装されます。名前は、パッケージの接頭辞が削除されたクラス名です。
戻り値:
名前

createKeymap

protected Keymap createKeymap()
テキストコンポーネントに使うキーマップを作成し、それに必要なバインディングをインストールします。デフォルトでは、キーマップはこの型の TextUI のすべてのインスタンスで共有されます。キーマップの名前は、getKeymapName メソッドで定義されます。キーマップが見つからない場合は、JTextComponent の DEFAULT_KEYMAP が使われます。

キーマップを作成するために使われるバインディングのセットは、getPropertyPrefix() メソッドと文字列 .keyBindings を結合したキーを使って UIManager から取得されます。型は、JTextComponent.KeyBinding[] であると見なされます。

戻り値:
キーマップ
関連項目:
getKeymapName(), JTextComponent

propertyChange

protected void propertyChange(PropertyChangeEvent evt)
関連する JTextComponent でバウンドプロパティが変更されたときに呼び出されます。これは、UI が JTextComponent のサブクラスのバウンドプロパティをどのように表示するかを反映するために UI の実装によって変更されるフックです。このメソッドは、実装されても何も実行しません。つまり、JTextComponent 自体でのプロパティに対する応答は、このメソッドの呼び出しの前に処理されます。
パラメータ:
evt - プロパティ変更イベント

getPropertyPrefix

protected abstract String getPropertyPrefix()
UIManager を使ってプロパティを参照するためのキーとして使われる名前を返します。この名前は、すべての標準テキストプロパティの接頭辞として使われます。
戻り値:
名前

installDefaults

protected void installDefaults()
フォント、フォアグラウンド、バックグラウンド、キャレットの色、選択の色、選択されたテキストの色、無効になったテキストの色、ボーダの色などのコンポーネントプロパティを初期化します。フォント、フォアグラウンド、バックグラウンドのプロパティは現在の値が null または UIResource の場合にだけ設定され、ほかのプロパティは現在の値が null の場合に設定されます。
関連項目:
uninstallDefaults(), installUI(javax.swing.JComponent)

uninstallDefaults

protected void uninstallDefaults()
明示的にオーバーライドされていないコンポーネントのプロパティを null に設定します。現在の値が UIResource でない場合に、プロパティはオーバーライドされていると見なされます。
関連項目:
installDefaults(), uninstallUI(javax.swing.JComponent)

installListeners

protected void installListeners()
UI のリスナーをインストールします。

uninstallListeners

protected void uninstallListeners()
UI のリスナーをアンインストールします。

installKeyboardActions

protected void installKeyboardActions()

uninstallKeyboardActions

protected void uninstallKeyboardActions()

paintBackground

protected void paintBackground(Graphics g)
ビューのバックグラウンドをペイントします。このメソッドは、関連するコンポーネントで isOpaque() が true の場合にだけ呼び出されます。デフォルトでは、コンポーネントのバックグラウンドカラーをペイントします。
パラメータ:
g - グラフィックスコンテキスト

getComponent

protected final JTextComponent getComponent()
この UI の実装に関連したテキストコンポーネントを返します。これは、UI がインストールされるまで null になります。
戻り値:
エディタコンポーネント

modelChanged

protected void modelChanged()
モデルの変更にフラグを立てます。このメソッドは、モデルが変更されると呼び出されます。関連するモデルのデフォルトのルート要素を表すように、ビュー階層を再構築するために実装されます。

setView

protected final void setView(View v)
ビュー階層の現在のルートを設定し、invalidate() を呼び出します。子コンポーネントがある場合、それらは削除されます。つまり、それらはビューに埋め込まれたコンポーネントから派生していると見なされます。
パラメータ:
v - ルートビュー

paintSafely

protected void paintSafely(Graphics g)
このスレッドのビューからモデルが変更されないという保証付きで、安全にインタフェースをペイントします。このメソッドは、後方から前方に向かって描画しながら次のことを実行します。
  1. コンポーネントが不透明とマークされている場合、バックグラウンドはコンポーネントの現在のバックグラウンドカラーでペイントされる
  2. ハイライト (存在する場合) がペイントされる
  3. ビュー階層がペイントされる
  4. キャレットがペイントされる
パラメータ:
g - グラフィックスコンテキスト

installUI

public void installUI(JComponent c)
コンポーネントの UI をインストールします。このメソッドは、次のことを実行します。
  1. 関連するコンポーネントを不透明に設定する。これはもっとも一般的な場合であり、サブクラスでまたは JTextComponent で直接簡単に変更できる。これにより、コンポーネントのバックグラウンドカラーがペイントされる
  2. 関連するコンポーネントにデフォルトのキャレットおよびハイライタをインストールする
  3. エディタおよびモデルに接続する。モデルがない場合は、デフォルトのモデルを作成する
  4. モデルを表すために使われるビューファクトリおよびビュー階層を作成する
オーバーライド:
クラス ComponentUI 内の installUI
パラメータ:
c - エディタコンポーネント
関連項目:
ComponentUI.installUI(javax.swing.JComponent)

uninstallUI

public void uninstallUI(JComponent c)
コンポーネントの UI をアンインストールします。このメソッドは、リスナーの削除、ハイライタのアンインストール、ビューの削除を行い、キーマップを無効にします。
オーバーライド:
クラス ComponentUI 内の uninstallUI
パラメータ:
c - エディタコンポーネント
関連項目:
ComponentUI.uninstallUI(javax.swing.JComponent)

update

public void update(Graphics g,
                   JComponent c)
スーパークラスは制御不可能な方法でバックグラウンドをペイントします。つまり、イメージをバックグラウンドにタイリングします。これが 2 度行われないようにするためには、このメソッドを実装し直してペイントだけを行います。

注: また、デフォルトの描画の場合は問題ありませんが、スーパークラスの場合はバックグラウンド描画時にスレッドに対して安全ではありません。

オーバーライド:
クラス ComponentUI 内の update

paint

public final void paint(Graphics g,
                        JComponent c)
インタフェースをペイントします。このメソッドは、描画時にこのスレッドのビューからモデルが変更されないという保証の下に paintSafely メソッドに送られます (関連モデルが AbstractDocument から引き出される場合)。これにより、モデルが非同期で更新されるようにします。
オーバーライド:
クラス ComponentUI 内の paint
パラメータ:
g - グラフィックスコンテキスト
c - エディタコンポーネント

getPreferredSize

public Dimension getPreferredSize(JComponent c)
エディタコンポーネントの適切なサイズを取得します。この要求の受信前にコンポーネントのサイズが指定されている場合、ビュー階層の適切なサイズを要求する前に、コンポーネントのサイズを反映するようにビュー階層のサイズが設定されます。これにより、書式付きビューは、要求の応答前に現在のコンポーネントのサイズに書式設定されます。ほかのビューは、現在の書式設定されているサイズを無視し、どちらの場合でも同じ応答を返します。
オーバーライド:
クラス ComponentUI 内の getPreferredSize
パラメータ:
c - エディタコンポーネント
戻り値:
サイズ

getMinimumSize

public Dimension getMinimumSize(JComponent c)
エディタコンポーネントの最小サイズを返します。
オーバーライド:
クラス ComponentUI 内の getMinimumSize
パラメータ:
c - エディタコンポーネント
戻り値:
サイズ

getMaximumSize

public Dimension getMaximumSize(JComponent c)
エディタコンポーネントの最大サイズを返します。
オーバーライド:
クラス ComponentUI 内の getMaximumSize
パラメータ:
c - エディタコンポーネント
戻り値:
サイズ

getVisibleEditorRect

protected Rectangle getVisibleEditorRect()
ルート View に指定する割り当てを返します。階層イベントのセットの関係で、このメソッドには適切でない名前がついています。返される Rectangle は可視性とはまったく関係がありません。この変換を計算するために、コンポーネントはゼロでない正のサイズを持つ必要があります。
戻り値:
ルートビューのバウンディングボックス

modelToView

public Rectangle modelToView(JTextComponent tc,
                             int pos)
                      throws BadLocationException
モデル内の指定された位置を、ビュー座標体系内の場所に変換します。この変換を計算するために、コンポーネントはゼロでない正のサイズを持つ必要があります。
オーバーライド:
クラス TextUI 内の modelToView
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
pos - 変換対象のモデル内でのローカル位置 >= 0
戻り値:
矩形の座標。モデルがペイントされていない場合は null
例外:
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合
関連項目:
TextUI.modelToView(javax.swing.text.JTextComponent, int)

modelToView

public Rectangle modelToView(JTextComponent tc,
                             int pos,
                             Position.Bias bias)
                      throws BadLocationException
モデル内の指定された位置を、ビュー座標体系内の場所に変換します。この変換を計算するために、コンポーネントはゼロでない正のサイズを持つ必要があります。
オーバーライド:
クラス TextUI 内の modelToView
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
pos - 変換対象のモデル内でのローカル位置 >= 0
戻り値:
矩形の座標。モデルがペイントされていない場合は null
例外:
BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を表さない場合
関連項目:
TextUI.modelToView(javax.swing.text.JTextComponent, int)

viewToModel

public int viewToModel(JTextComponent tc,
                       Point pt)
ビュー座標体系内の指定された位置を、モデル内の最も近い場所に変換します。この変換を計算するために、コンポーネントはゼロでない正のサイズを持つ必要があります。
オーバーライド:
クラス TextUI 内の viewToModel
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
pt - 変換対象のビューにおける位置。この場合の座標体系は、マウスイベントと同じ座標体系でなければならない
戻り値:
ドキュメントの先頭からのオフセット >= 0。ペイントされていない場合は -1
関連項目:
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)

viewToModel

public int viewToModel(JTextComponent tc,
                       Point pt,
                       Position.Bias[] biasReturn)
ビュー座標体系内の指定された位置を、モデル内の最も近い場所に変換します。この変換を計算するために、コンポーネントはゼロでない正のサイズを持つ必要があります。
オーバーライド:
クラス TextUI 内の viewToModel
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
pt - 変換対象のビューにおける位置。この場合の座標体系は、マウスイベントと同じ座標体系でなければならない
戻り値:
ドキュメントの先頭からのオフセット >= 0。コンポーネントがまだ正のサイズを持っていない場合は -1
関連項目:
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)

getNextVisualPositionFrom

public int getNextVisualPositionFrom(JTextComponent t,
                                     int pos,
                                     Position.Bias b,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。ビューによっては、可視ではないか、モデル内と同じ順序でないか、またはモデル内の位置へのアクセスを許可しない場合があります。
オーバーライド:
クラス TextUI 内の getNextVisualPositionFrom
パラメータ:
pos - 変換対象の位置 >= 0
a - 描画のために割り当てられた領域
direction - キーボード上に通常ある矢印キーと見なすことができる、現在の位置からの方向。SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH、または SwingConstants.SOUTH
戻り値:
次の可視の位置をもっともよく表すモデル内の位置
例外:
BadLocationException -  
IllegalArgumentException - 方向が無効な場合

damageRange

public void damageRange(JTextComponent tc,
                        int p0,
                        int p1)
モデルの指定された部分に対応するビューの部分がペイントし直されます。ビューが現在ペイントされていない場合は何も行われません。
オーバーライド:
クラス TextUI 内の damageRange
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
p0 - 範囲の始点 >= 0
p1 - 範囲の終点 >= p0
関連項目:
TextUI.damageRange(javax.swing.text.JTextComponent, int, int)

damageRange

public void damageRange(JTextComponent t,
                        int p0,
                        int p1,
                        Position.Bias p0Bias,
                        Position.Bias p1Bias)
モデル内の指定された一部分に対応するビューの部分が描画し直されます。
オーバーライド:
クラス TextUI 内の damageRange
パラメータ:
p0 - 範囲の始点 >= 0
p1 - 範囲の終点 >= p0

getEditorKit

public EditorKit getEditorKit(JTextComponent tc)
UI の EditorKit を返します。
オーバーライド:
クラス TextUI 内の getEditorKit
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
戻り値:
エディタ機能
関連項目:
TextUI.getEditorKit(javax.swing.text.JTextComponent)

getRootView

public View getRootView(JTextComponent tc)
モデルが空間的にどのように表現されているかを判定するためにトラバースすることのできる、関連するテキストコンポーネント (すなわち階層のルート) を割り当てられた View を返します。

注: View 階層はルート階層からトラバースすることができ、他のことも同様にできます。このように行われたことは、TextUI を通じた単純なメソッド呼び出しのように保護することができません。したがって、並行性の考えられる適切なオペレーションは、このメソッドを呼び出す論理で処理が行われるようにする必要があります。

オーバーライド:
クラス TextUI 内の getRootView
パラメータ:
tc - この UI がインストールされているテキストコンポーネント
戻り値:
ビュー
関連項目:
TextUI.getRootView(javax.swing.text.JTextComponent)

create

public View create(Element elem)
要素のビューを作成します。ビューを作成するファクトリをサブクラスに直接実装するには、このメソッドを実装し直す必要があります。デフォルトでは、要素を表すことができないことを示す null を返します。
定義:
インタフェース ViewFactory 内の create
パラメータ:
elem - 要素
戻り値:
ビュー

create

public View create(Element elem,
                   int p0,
                   int p1)
要素のビューを作成します。ビューを作成するファクトリをサブクラスに直接実装するには、このメソッドを実装し直す必要があります。デフォルトでは、要素の部分を表現できないことを示す null を返します。
パラメータ:
elem - 要素
p0 - 開始オフセット >= 0
p1 - 終了オフセット >= p0
戻り値:
ビュー

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.