モジュール java.desktop
パッケージ 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はさまざまなプロパティのデフォルト値をインストールします。 このデフォルトは、すべてのプロパティのために何かをインストールします。 ただし通常は、LAF実装が追加の作業を行います。 少なくとも、LAFは一般的にキー・バインディングをインストールします。

    また、JTextComponentに関連付けられたDocumentAbstractDocumentのサブクラスである場合、このクラスはいくつかの並行サポートも提供します。 ViewまたはView階層へのアクセスは、モデルを変更するスレッドとSwingイベント・スレッド(レンダリング、モデルとビュー座標変換などを行う)との間で直列化されます。 ルート・ビューにアクセスするときは、最初にAbstractDocumentで読取りロックを獲得して、そのロックをfinallyブロックで解放するようにしてください。

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

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

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

    警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースとの互換性がなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。

    • コンストラクタの詳細

      • 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. クライアント・プログラムによって不透明プロパティがまだ設定されていない場合に、関連付けられたコンポーネントを不透明に設定します。 これにより、コンポーネントのバックグラウンド・カラーがペイントされます。
        2. 関連付けられたコンポーネントにデフォルトのキャレットおよびハイライタをインストールします。 これらのプロパティは、現在の値がnullまたはUIResourceのインスタンスである場合にのみ設定されます。
        3. エディタおよびモデルに接続します。 モデルがない場合は、デフォルトのモデルを作成します。
        4. ビュー・ファクトリ、およびモデルを表すために使われるビュー階層を作成します。
        オーバーライド:
        installUI、クラス: ComponentUI
        パラメータ:
        c - エディタ・コンポーネント
        関連項目:
        ComponentUI.installUI(javax.swing.JComponent)
      • uninstallUI

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

        public void update​(Graphics g,
                           JComponent c)
        スーパー・クラスが制御不可能な方法でバックグラウンドをペイントします(イメージをバックグラウンドにタイリングする場合があります)。 これが2度と発生しないように、このメソッドは単純にペイントするように再実装されます。

        注: 注:また、スーパー・クラスはバックグラウンドのレンダリングでスレッド・セーフではありません。ただし、このことはデフォルト・レンダリングでは問題になりません。

        オーバーライド:
        update、クラス: ComponentUI
        パラメータ:
        g - ペイント対象のGraphicsコンテキスト
        c - ペイントされるコンポーネント。この引数は通常無視されるが、UIオブジェクトがステートレスで、複数のコンポーネントで共有されている場合は使用されることがある
        関連項目:
        ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent), JComponent.paintComponent(java.awt.Graphics)
      • paint

        public final void paint​(Graphics g,
                                JComponent c)
        インタフェースをペイントします。 このメソッドは、レンダリング時にこのスレッドのビューからモデルが変更されないことが保証された状態で、paintSafelyメソッドに送られます(関連付けられたモデルがAbstractDocumentから派生している場合)。 これにより、モデルは潜在的に非同期で更新されます。
        オーバーライド:
        paint、クラス: ComponentUI
        パラメータ:
        g - グラフィックス・コンテキスト
        c - エディタ・コンポーネント
        関連項目:
        ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
      • getPreferredSize

        public Dimension getPreferredSize​(JComponent c)
        エディタ・コンポーネントの推奨サイズを取得します。 コンポーネントがこの要求を受け取る前にサイズが与えられている場合、そのサイズを反映するようにビュー階層のサイズを設定してから、ビュー階層の推奨サイズを要求します。 これにより、フォーマットされるビューを現在のコンポーネント・サイズにフォーマットしてから、要求に答えることができます。 ほかのビューは、現在フォーマットされているサイズを考慮せず、いずれの場合も同じ答えを出します。
        オーバーライド:
        getPreferredSize、クラス: ComponentUI
        パラメータ:
        c - エディタ・コンポーネント
        戻り値:
        サイズ
        関連項目:
        JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)
      • getVisibleEditorRect

        protected Rectangle getVisibleEditorRect​()
        ルートViewを渡す割り当てを取得します。 従来のイベントの不適切なセットが原因で、このメソッドには不適切な名前が付いています。 返されるRectangleは可視性には関係がありません。 この変換を計算するには、コンポーネントはゼロでない正のサイズを持つ必要があります。
        戻り値:
        ルート・ビューのバウンディング・ボックス
      • modelToView2D

        public Rectangle2D modelToView2D​(JTextComponent tc,
                                         int pos,
                                         Position.Bias bias)
                                  throws BadLocationException
        クラスからコピーされた説明:TextUI
        モデル内の指定された位置を、ビュー座標体系内の場所に変換します。
        オーバーライド:
        クラスTextUImodelToView2D
        パラメータ:
        tc - このUIがインストールされているテキスト・コンポーネント
        pos - >= 0を翻訳するモデル内のローカル・ロケーション
        bias - ポジションのバイアス
        戻り値:
        Rectangle2Dとしての座標
        例外:
        BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を示さない場合
      • viewToModel

        @Deprecated(since="9")
        public int viewToModel​(JTextComponent tc,
                               Point pt)
        「非推奨。」 viewToModel2D(JTextComponent, Point2D, Position.Bias[])に置き換えられました」
        ビュー座標体系内の指定された場所を、モデル内のもっとも近い代表的な位置に変換します。 この変換を計算するには、コンポーネントはゼロでない正のサイズを持つ必要があります。
        定義:
        viewToModel、クラス: TextUI
        パラメータ:
        tc - このUIがインストールされているテキスト・コンポーネント
        pt - 変換対象のビューの座標系での位置。 この場合の座標系は、マウス・イベントと同じ座標系であるべきである。
        戻り値:
        ドキュメントの先頭からのオフセットで、0以上。ペイントされていない場合は -1
        関連項目:
        TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
      • viewToModel

        @Deprecated(since="9")
        public int viewToModel​(JTextComponent tc,
                               Point pt,
                               Position.Bias[] biasReturn)
        「非推奨。」 viewToModel2D(JTextComponent, Point2D, Position.Bias[])に置き換えられました」
        ビュー座標体系内の指定された場所を、モデル内のもっとも近い代表的な位置に変換します。 この変換を計算するには、コンポーネントはゼロでない正のサイズを持つ必要があります。
        定義:
        viewToModel、クラス: TextUI
        パラメータ:
        tc - このUIがインストールされているテキスト・コンポーネント
        pt - 変換対象のビューの座標系での位置。 この場合の座標系は、マウス・イベントと同じ座標系であるべきである。
        biasReturn - 指定された点がモデル内の前の文字と次の文字のどちらに近いのかを示すため、このメソッドによって書き込まれる
        戻り値:
        ドキュメントの先頭からのオフセットで、0以上。コンポーネントがまだ正のサイズを持っていない場合は -1。
        関連項目:
        TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
      • viewToModel2D

        public int viewToModel2D​(JTextComponent tc,
                                 Point2D pt,
                                 Position.Bias[] biasReturn)
        クラスからコピーされた説明:TextUI
        ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。
        オーバーライド:
        クラスTextUIviewToModel2D
        パラメータ:
        tc - このUIがインストールされているテキスト・コンポーネント
        pt - 変換対象のビューの座標系での位置。
        biasReturn - 指定された点がモデル内の前の文字と次の文字のどちらに近いのかを示すため、このメソッドによって書き込まれる
        戻り値:
        ビュー内の指定された点を最もよく表すモデル内のロケーション>= 0
      • getNextVisualPositionFrom

        public int getNextVisualPositionFrom​(JTextComponent t,
                                             int pos,
                                             Position.Bias b,
                                             int direction,
                                             Position.Bias[] biasRet)
                                      throws BadLocationException
        キャレットが配置される可能性のある、視覚的に表された次のモデル位置を決定する手段を提供します。 ビューによっては、可視ではないか、モデル内と同じ順序でないか、またはモデル内の一部の位置へのアクセスを許可しない場合があります。
        定義:
        getNextVisualPositionFrom、クラス: TextUI
        パラメータ:
        t - このUIがインストールされているテキスト・コンポーネント
        pos - 変換対象の位置>= 0
        b - 位置のバイアス
        direction - 現在位置からの方向。キーボードに通常見られる矢印キーと見なすことができる。 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTHまたはSwingConstants.SOUTHの場合があります
        biasRet - 返される位置のバイアスを含む配列
        戻り値:
        次の可視の位置をもっともよく表す、モデル内の位置
        例外:
        BadLocationException - ドキュメント・モデル内の不適切なロケーション
      • damageRange

        public void damageRange​(JTextComponent tc,
                                int p0,
                                int p1)
        モデル内の指定された一部分に対応するビューの部分が描画し直されるようにします。 ビューが現在ペイントされていない場合は何も行われません。
        定義:
        damageRange、クラス: TextUI
        パラメータ:
        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)
        モデル内の指定された一部分に対応するビューの部分が描画し直されるようにします。
        定義:
        damageRange、クラス: TextUI
        パラメータ:
        p0 - 範囲の始点>= 0
        p1 - 範囲の終点>= p0
        t - このUIがインストールされているテキスト・コンポーネント
        p0Bias - 前の文字または次の文字に向かう、最初の文字位置のバイアス
        p1Bias - 前の文字または次の文字に向かう第2の文字位置の偏り
      • getRootView

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

        注: View階層はルート・ビューからトラバースすることができ、ほかのことも同様にできます。 このように行われたことは、TextUIを通じた単純なメソッド呼出しのように保護することができません。 したがって、並行処理が存在する場合には、このメソッドを呼び出すロジックによって、適切な処理を準備する必要があります。

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

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

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