モジュール java.desktop
パッケージ javax.swing.text

クラスCompositeView

  • すべての実装されたインタフェース:
    SwingConstants
    直系の既知のサブクラス:
    BoxView

    public abstract class CompositeView
    extends View
    CompositeViewは、1つ以上の子ビューを管理するabstractクラスのViewの実装です。 CompositeViewは、比較的少数の子ビューを管理することを想定しています。 CompositeViewは、BoxViewなど、子のViewを含む、Viewの実装の開始ポイントとして使用されます。 子のViewのコレクションを管理するサブクラスでは、replace(int, int, javax.swing.text.View[])メソッドが使用されます。 DocumentListener通知中にViewreplaceを呼び出すので、通常replaceを直接呼び出す必要はありません。

    CompositeViewは、子のViewにレイアウト・ポリシーを強制しませんが、これから含むことになる子のViewの挿入は許可します。 インセットは、setInsets(short, short, short, short)またはsetParagraphInsets(javax.swing.text.AttributeSet)によって設定できます。

    Viewの抽象メソッドに加え、CompositeViewのサブクラスもオーバーライドする必要があります。

    • コンストラクタの詳細

      • CompositeView

        public CompositeView​(Element elem)
        指定された要素のCompositeViewを構築します。
        パラメータ:
        elem - このビューが扱う要素
    • メソッドの詳細

      • loadChildren

        protected void loadChildren​(ViewFactory f)
        ビューを初期化するためにすべての子をロードします。 これは、setParent(javax.swing.text.View)メソッドによって呼び出されます。 サブクラスは、このメソッドを再実装して別の方法で子ビューを初期化できます。 デフォルトの実装は、子要素ごとに子ビューを作成します。
        パラメータ:
        f - ビュー・ファクトリ
        関連項目:
        setParent(javax.swing.text.View)
      • setParent

        public void setParent​(View parent)
        ビューの親を設定します。 このビューがまだ子を持たない場合は、loadChildrenメソッドの呼出しとともにスーパークラスの動作を提供するために実装し直されます。 子をコンストラクタの中にロードしないようにしてください。これは、親を設定する動作が原因となって、たとえば収容側Containerを取得するために、子が階層をさかのぼって検索しようとする可能性があるからです。 このビューが子を持つ場合、ビューはビュー階層内のある位置から別の位置へ移動しているので、loadChildrenメソッドは呼び出されません。
        オーバーライド:
        setParent、クラス: View
        パラメータ:
        parent - ビューの親。ない場合はnull
      • getViewCount

        public int getViewCount()
        このビューの子ビューの数を返します。
        オーバーライド:
        getViewCount、クラス: View
        戻り値:
        ビューの数>= 0
        関連項目:
        getView(int)
      • getView

        public View getView​(int n)
        コンテナ内のn番目のビューを返します。
        オーバーライド:
        getView、クラス: View
        パラメータ:
        n - 目的のビューの番号。0以上でgetViewCount()より小さい値
        戻り値:
        インデックスnのビュー
      • replace

        public void replace​(int offset,
                            int length,
                            View[] views)
        子ビューを置換します。 削除するビューがない場合、これは挿入として動作します。 追加するビューがない場合、これは削除として動作します。 削除されるビューの親はnullに設定され、ガベージ・コレクションが行えるようにそれらのビューへの内部参照が削除されます。
        オーバーライド:
        replace、クラス: View
        パラメータ:
        offset - 新規ビューを挿入するための、子ビューの開始インデックス。0以上、getViewCount以下
        length - 削除する既存の子ビューの数。この値は0以上で、(getViewCount() - offset)以下
        views - 追加する子ビュー。追加される子がない場合は、nullも可(削除に便利)
      • getChildAllocation

        public Shape getChildAllocation​(int index,
                                        Shape a)
        指定された、レンダリングする子ビューへの割り当てを取得します。 さまざまなビューの配置場所を探せます。
        オーバーライド:
        getChildAllocation、クラス: View
        パラメータ:
        index - 子のインデックス。0以上でgetViewCount()より小さい値
        a - このビューに対する割当て
        戻り値:
        子に対する割当て
      • modelToView

        public Shape modelToView​(int p0,
                                 Position.Bias b0,
                                 int p1,
                                 Position.Bias b1,
                                 Shape a)
                          throws BadLocationException
        ドキュメント・モデルの座標空間からビューの座標空間へのマッピングを提供します。
        オーバーライド:
        modelToView、クラス: View
        パラメータ:
        p0 - 変換対象の位置>= 0
        b0 - 位置が2つのビューの境界である場合に、p0によって表される直前の文字または次の文字へのバイアス。Position.Bias.ForwardまたはPosition.Bias.Backward
        p1 - 変換対象の位置>= 0
        b1 - 位置が2つのビューの境界である場合に、p1によって表される直前の文字または次の文字へのバイアス
        a - 描画するために割り当てられた領域
        戻り値:
        指定された位置のバウンディング・ボックス
        例外:
        BadLocationException - 指定された位置が、関連するドキュメント内の有効な位置を示さない場合
        IllegalArgumentException - bias引数が無効な場合
        関連項目:
        View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
      • viewToModel

        public int viewToModel​(float x,
                               float y,
                               Shape a,
                               Position.Bias[] bias)
        ビューの座標空間からモデルの論理座標空間へのマッピングを提供します。
        定義:
        viewToModel、クラス: View
        パラメータ:
        x - 変換するビュー位置のx座標>= 0
        y - 変換するビュー位置のy座標>= 0
        a - 描画するために割り当てられた領域
        bias - Position.Bias.ForwardまたはPosition.Bias.Backward
        戻り値:
        指定されたビュー内の点をもっとも適切に表現するモデル内の位置>= 0
        関連項目:
        View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
      • getViewIndex

        public int getViewIndex​(int pos,
                                Position.Bias b)
        モデル内の指定された位置を表す子ビューのインデックスを返します。 下位互換のためのgetViewIndexByPositionメソッドを呼び出すためにこのメソッドを実装しています。
        オーバーライド:
        getViewIndex、クラス: View
        パラメータ:
        pos - 位置>= 0
        b - バイアス
        戻り値:
        指定された位置を表すビューのインデックス。その位置を表すビューがない場合は -1
        導入されたバージョン:
        1.3
      • isBefore

        protected abstract boolean isBefore​(int x,
                                            int y,
                                            Rectangle alloc)
        ある点が、矩形範囲の前にあるかどうかを判定します。
        パラメータ:
        x - X座標>= 0
        y - Y座標>= 0
        alloc - 矩形
        戻り値:
        点が指定された範囲の前にある場合にtrue
      • isAfter

        protected abstract boolean isAfter​(int x,
                                           int y,
                                           Rectangle alloc)
        ある点が、矩形範囲の後ろにあるかどうかを判定します。
        パラメータ:
        x - X座標>= 0
        y - Y座標>= 0
        alloc - 矩形
        戻り値:
        点が指定された範囲の後にある場合にtrue
      • getViewAtPoint

        protected abstract View getViewAtPoint​(int x,
                                               int y,
                                               Rectangle alloc)
        指定された座標の子ビューを取得します。
        パラメータ:
        x - X座標>= 0
        y - Y座標>= 0
        alloc - 入口での親の割当て。出口で子の割当てに変更
        戻り値:
        子ビュー
      • childAllocation

        protected abstract void childAllocation​(int index,
                                                Rectangle a)
        指定された子への割り当てを返します。
        パラメータ:
        index - 子のインデックス。0以上でgetViewCount()より小さい値
        a - 入口でのボックスの内部への割当て。および、出口でのインデックス位置の子ビューの割当て。
      • getViewAtPosition

        protected View getViewAtPosition​(int pos,
                                         Rectangle a)
        モデル内で指定された位置を表す子ビューを取得します。 このメソッドは、それぞれの子要素に対して子ビューがある場合に、ビューを取り出すために実装されています。
        パラメータ:
        pos - 位置>= 0
        a - 入口でのボックスの内部への割当て。および、出口での位置を含むビューの割当て
        戻り値:
        指定された位置を表すビュー。存在しない場合はnull
      • getViewIndexAtPosition

        protected int getViewIndexAtPosition​(int pos)
        モデル内の指定された位置を表す子ビューのインデックスを取得します。 このメソッドは、それぞれの子要素に対して子ビューがある場合に、ビューを取り出すために実装されています。
        パラメータ:
        pos - 位置>= 0
        戻り値:
        指定された位置を表すビューのインデックス。その位置を表すビューがない場合は -1
      • getInsideAllocation

        protected Rectangle getInsideAllocation​(Shape a)
        ビューに指定された不変の割当てを、内部割当てを表す可変の割当てに変換します(上、左、下、右のインセットで指定された割当ての境界を削除する場合など)。 子ビューへの割当てを表すために戻り値が変わってしまうことも予想されます。 これを実装すると、Rectangleを多く作成しすぎないようにインスタンス変数を再利用できます。 通常、このメソッドを呼び出すと、childAllocationメソッドに送られます。
        パラメータ:
        a - ビューに指定された割当て
        戻り値:
        マージンがすべて削除されたあとのビュー内部を表す割当て。指定された割当てがnullの場合、戻り値はnull
      • setParagraphInsets

        protected void setParagraphInsets​(AttributeSet attr)
        指定された属性から選ばれた段落属性から、インセットを設定します。
        パラメータ:
        attr - 属性
      • setInsets

        protected void setInsets​(short top,
                                 short left,
                                 short bottom,
                                 short right)
        ビューのインセットを設定します。
        パラメータ:
        top - 上のインセット>= 0
        left - 左のインセット>= 0
        bottom - 下のインセット>= 0
        right - 右のインセット>= 0
      • getLeftInset

        protected short getLeftInset()
        左のインセットを取得します。
        戻り値:
        インセット>= 0
      • getRightInset

        protected short getRightInset()
        右のインセットを取得します。
        戻り値:
        インセット>= 0
      • getTopInset

        protected short getTopInset()
        上のインセットを取得します。
        戻り値:
        インセット>= 0
      • getBottomInset

        protected short getBottomInset()
        下のインセットを取得します。
        戻り値:
        インセット>= 0
      • getNextNorthSouthVisualPositionFrom

        protected int getNextNorthSouthVisualPositionFrom​(int pos,
                                                          Position.Bias b,
                                                          Shape a,
                                                          int direction,
                                                          Position.Bias[] biasRet)
                                                   throws BadLocationException
        カーソルを置くことのできる、次の視覚的な位置を返します。方向は上(north)または下(south)になります。
        パラメータ:
        pos - 変換対象の位置>= 0
        b - Position.Bias.ForwardまたはPosition.Bias.Backwardのバイアス値
        a - 描画するために割り当てられた領域
        direction - 現在位置からの方向。これは、キーボードに通常存在する矢印キーと見なすことができ、次のいずれかになる。
        • SwingConstants.NORTH
        • SwingConstants.SOUTH
        biasRet - チェックされたバイアスを含む配列
        戻り値:
        次の上または下の位置をもっともよく表すモデル内の位置
        例外:
        BadLocationException - ドキュメント・モデル内の不適切なロケーション
        IllegalArgumentException - directionが無効である場合
        関連項目:
        getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
      • getNextEastWestVisualPositionFrom

        protected int getNextEastWestVisualPositionFrom​(int pos,
                                                        Position.Bias b,
                                                        Shape a,
                                                        int direction,
                                                        Position.Bias[] biasRet)
                                                 throws BadLocationException
        カーソルを置くことのできる、次の視覚的な位置を返します。方向は右(east)または左(west)になります。
        パラメータ:
        pos - 変換対象の位置>= 0
        b - Position.Bias.ForwardまたはPosition.Bias.Backwardのバイアス値
        a - 描画するために割り当てられた領域
        direction - 現在位置からの方向。これは、キーボードに通常存在する矢印キーと見なすことができ、次のいずれかになる。
        • SwingConstants.WEST
        • SwingConstants.EAST
        biasRet - チェックされたバイアスを含む配列
        戻り値:
        次の左または右の位置をもっともよく表すモデル内の位置
        例外:
        BadLocationException - ドキュメント・モデル内の不適切なロケーション
        IllegalArgumentException - directionが無効である場合
        関連項目:
        getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])
      • flipEastAndWestAtEnds

        protected boolean flipEastAndWestAtEnds​(int position,
                                                Position.Bias bias)
        次のビューをどの方向に配置するかを決定します。 インデックスnのViewが考慮されます。 通常は、EASTへのViewがインデックスn+1、WESTへのViewがインデックスn -1となるように、Viewは左から右へレイアウトされます。 双方向テキストなど一部の場合では、EASTへのViewをインデックスn+1ではなくインデックスn -1に、またはWESTへのViewをインデックスn - 1ではなくインデックスn+1にすることもできます。 この場合、このメソッドはtrueを返し、Viewが降順にレイアウトされていることを示します。

        ここでは無条件にfalseが返されます。Viewを降順に配置する可能性がある場合、サブクラスはこのメソッドをオーバーライドします。

        パラメータ:
        position - モデルへの位置
        bias - Position.Bias.ForwardまたはPosition.Bias.Backward
        戻り値:
        false