モジュール javafx.graphics
パッケージ javafx.scene.text

クラスTextFlow

  • すべての実装されたインタフェース:
    Styleable, EventTarget


    public class TextFlow
    extends Pane
    TextFlowは、リッチ・テキストをレイアウトするように設計された特殊レイアウトです。 これは、複数のTextノードを単一のテキスト・フローにレイアウトするために使用できます。 TextFlowは、その内側にある各Textノードのテキストとフォント、およびそれ自体の幅とテキスト位置を使用して、それぞれの子の位置を決定します。 単一のTextノードが折返しのために数行にまたがる場合や、Textノードの視覚的な位置が、双方向の並替えのために論理位置とは異なる場合があります。

    Text以外のすべてのノードは、テキスト・レイアウトの埋込みオブジェクトとして扱われます。 これは、優先幅、優先高および優先ベースライン・オフセットを使用して、コンテンツに挿入されます。

    TextノードがTextFlow内にあるとき、一部のプロパティが無視されます。 たとえば、Textノードの場所は親によって決定されるため、ノードのxプロパティおよびyプロパティは無視されます。 同様に、折返しに使用される幅はTextFlowの幅であるため、Textノードの折返し幅も無視されます。 TextがTextFlowによってレイアウトされるときには、そのpickOnBoundsプロパティの値はfalseに設定されます。 このようになるのは、(通常は改行および双方向の並替えのために)単一のTextノードのコンテンツを分割してそれぞれをTextFlowの異なる場所に配置できるためです。

    レイアウトの折返し幅は、リージョンの現在の幅によって決定されます。 これは、アプリケーションでTextFlowの優先幅を設定することによって指定できます。 折返しが必要ない場合、アプリケーションでDouble.MAX_VALUEまたはRegion.USE_COMPUTED_SIZEに優先幅を設定できます。

    段落は、\nで区切られ、Textの子に存在します。

    TextFlowの例:

    
         Text text1 = new Text("Big italic red text");
         text1.setFill(Color.RED);
         text1.setFont(Font.font("Helvetica", FontPosture.ITALIC, 40));
         Text text2 = new Text(" little bold blue text");
         text2.setFill(Color.BLUE);
         text2.setFont(Font.font("Helvetica", FontWeight.BOLD, 10));
         TextFlow textFlow = new TextFlow(text1, text2);
     

    TextFlowは、各管理対象の子をその子の可視プロパティ値に関係なくレイアウトします。管理対象外の子は、すべてのレイアウト計算で無視されます。

    CSSを使用してTextFlowの背景とボーダーのスタイルを設定できる場合があります。 詳細は、Regionスーパー・クラスを参照してください。

    サイズ変更可能な範囲

    TextFlowの親は、レイアウトする際にTextFlowの範囲内でTextFlowをサイズ変更します。 デフォルトでは、TextFlowは次の表に示すようにコンテンツに基づいてこの範囲を計算します。

    TextFlowサイズ変更表
    widthheight
    最小 左/右の枠 上/下の枠+テキスト・コンテンツの高さ
    優先 左/右の枠+テキスト・コンテンツの幅 上/下の枠+テキスト・コンテンツの高さ
    最大 Double.MAX_VALUEDouble.MAX_VALUE

    TextFlowの最大幅および最大高には制限がないため、親に割り当てられているスペースすべてを満たすために、親がその優先サイズより大きいサイズに変更される可能性があります。

    TextFlowには、サイズ範囲を直接設定するためのプロパティがあります。 これらのプロパティのデフォルトはセンチネル値Region.USE_COMPUTED_SIZEになりますが、アプリケーションで、必要に応じて、次のような他の値に設定できます。

    
         textflow.setMaxWidth(500);
     
    アプリケーションでは、これらのプロパティをRegion.USE_COMPUTED_SIZEに戻すことによって、計算値をリストアできます。

    TextFlowはデフォルトではそのコンテンツをクリップしないため、子の優先サイズが、textflowが子に割り当てる必要があるスペースより大きい場合、子の境界がtextflow自体の境界の外側まで拡大することがあります。

    導入されたバージョン:
    JavaFX 8.0
    • コンストラクタの詳細

      • TextFlow

        public TextFlow​()
        空のTextFlowレイアウトを作成します。
      • TextFlow

        public TextFlow​(Node... children)
        指定された子を持つTextFlowレイアウトを作成します。
        パラメータ:
        children - 子。
    • メソッドの詳細

      • hitTest

        public final HitInfo hitTest​(Point2D point)
        ローカル・ポイントをコンテンツのインデックスにマップします。
        パラメータ:
        point - テストされる指定された点
        戻り値:
        見つかった文字インデックスを表すHitInfo
        導入されたバージョン:
        9
      • caretShape

        public PathElement[] caretShape​(int charIndex,
                                        boolean leading)
        キャレットのシェイプをローカル座標で返します。
        パラメータ:
        charIndex - キャレットの文字インデックス
        leading - キャレットが文字の先端に偏っているかどうか
        戻り値:
        Shapeの作成に使用できるPathElementの配列
        導入されたバージョン:
        9
      • rangeShape

        public final PathElement[] rangeShape​(int start,
                                              int end)
        ローカル座標のテキストの範囲のシェイプを返します。
        パラメータ:
        start - 範囲の先頭の文字インデックス
        end - 範囲の終了文字インデックス(non-inclusive)
        戻り値:
        Shapeの作成に使用できるPathElementの配列
        導入されたバージョン:
        9
      • usesMirroring

        public boolean usesMirroring​()
        次のクラスからコピーされた説明: Node
        ノードの向きが右から左の場合にノードをミラー化するかどうかを指定します。

        ノードがミラー化される場合は、起点が自動的に右上隅に移動され、ミラー化変換を使用して子がレイアウトされ、ノードが右から左に描画されます。 ノードによっては、変換を使用せずに右から左に描画した方がよい場合があります。 これらのノードに対してfalseを指定すると、向きが右から左のときに自動変換が使用されなくなります。

        オーバーライド:
        usesMirroring 、クラス: Node
        戻り値:
        このNodeをミラー・リングする必要がある場合はtrue
      • setWidth

        protected void setWidth​(double value)
        クラスからコピーされた説明: Region
        プロパティwidthの値を設定します。
        オーバーライド:
        setWidth 、クラス: Region
      • computePrefWidth

        protected double computePrefWidth​(double height)
        クラスからコピーされた説明: Region
        指定された高さに対するこのリージョンの優先幅を計算します。 Regionのサブクラスでは、このメソッドをオーバーライドして、そのコンテンツおよびレイアウト手法に基づいて適切な値を返す必要があります。 サブクラスにVERTICALコンテンツ・バイアスがない場合は、heightパラメータを無視できます。
        オーバーライド:
        computePrefWidth 、クラス: Region
        パラメータ:
        height - 推奨される幅がそれに依存する場合に使用する必要がある高さ
        戻り値:
        このリージョンの計算された優先幅
      • computePrefHeight

        protected double computePrefHeight​(double width)
        クラスからコピーされた説明: Region
        指定された幅に対するこのリージョンの優先高を計算します。Regionのサブクラスでは、このメソッドをオーバーライドして、そのコンテンツおよびレイアウト手法に基づいて適切な値を返す必要があります。 サブクラスにHORIZONTALコンテンツ・バイアスがない場合は、widthパラメータを無視できます。
        オーバーライド:
        computePrefHeight 、クラス: Region
        パラメータ:
        width - 推奨される高さがそれに依存する場合に使用する必要がある幅
        戻り値:
        このリージョンの計算された優先高
      • computeMinHeight

        protected double computeMinHeight​(double width)
        クラスからコピーされた説明: Region
        このリージョンの最小高を計算します。 デフォルトでは、上枠と下枠の合計を返します。 Regionのサブクラスでは、このメソッドをオーバーライドして、そのコンテンツおよびレイアウト手法に基づいて適切な値を返す必要があります。 サブクラスにHORIZONTALコンテンツ・バイアスがない場合は、widthパラメータを無視できます。
        オーバーライド:
        computeMinHeight 、クラス: Region
        パラメータ:
        width - 最小高が幅に依存する場合に使用する必要がある幅
        戻り値:
        このリージョンの計算された最小高
      • requestLayout

        public void requestLayout​()
        クラスからコピーされた説明: Parent
        次のシーンがレンダリングされる前に実行するレイアウト・パスを要求します。 これは、パルス(アニメーションのフレーム)ごとに1回行われるように、非同期にバッチ処理されます。

        この親がレイアウト・ルートまたは管理対象外のいずれかである場合は、シーンのダーティ・レイアウト・リストに直接追加されます。そうでない場合は、requestParentLayoutが起動されます。

        オーバーライド:
        requestLayout 、クラス: Parent
      • layoutChildren

        protected void layoutChildren​()
        クラスからコピーされた説明: Parent
        このParentの子をレイアウトするレイアウト・パス中に起動されます。 デフォルトでは、管理対象のサイズ変更可能なコンテンツのサイズをその優先サイズに合せて設定するのみで、ノードの配置は行われません。

        サブクラスは必要に応じてこの関数をオーバーライドし、コンテンツをレイアウトする必要があります。

        オーバーライド:
        layoutChildren 、クラス: Parent
      • setTextAlignment

        public final void setTextAlignment​(TextAlignment value)
        プロパティtextAlignmentの値を設定します。
        プロパティの説明:
        水平方向のテキスト位置を定義します。
        デフォルト値:
        TextAlignment.LEFT
      • getTextAlignment

        public final TextAlignment getTextAlignment​()
        プロパティtextAlignmentの値を取得します。
        プロパティの説明:
        水平方向のテキスト位置を定義します。
        デフォルト値:
        TextAlignment.LEFT
      • setLineSpacing

        public final void setLineSpacing​(double spacing)
        プロパティlineSpacingの値を設定します。
        プロパティの説明:
        行間のピクセル単位の垂直方向の総スペースを定義します。
        デフォルト値:
        0
        導入されたバージョン:
        JavaFX 8.0
      • getLineSpacing

        public final double getLineSpacing​()
        プロパティlineSpacingの値を取得します。
        プロパティの説明:
        行間のピクセル単位の垂直方向の総スペースを定義します。
        デフォルト値:
        0
        導入されたバージョン:
        JavaFX 8.0
      • lineSpacingProperty

        public final DoubleProperty lineSpacingProperty​()
        行間のピクセル単位の垂直方向の総スペースを定義します。
        デフォルト値:
        0
        導入されたバージョン:
        JavaFX 8.0
        関連項目:
        getLineSpacing()setLineSpacing(double)
      • getBaselineOffset

        public final double getBaselineOffset​()
        クラスからコピーされた説明: Parent
        最初に管理される子に基づいて、ベースライン・オフセットを計算します。 このような子がない場合は、Node.getBaselineOffset()を返します。
        オーバーライド:
        getBaselineOffset 、クラス: Parent
        戻り値:
        baseline offset
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        戻り値:
        このクラスに関連付けられたCssMetaData。スーパークラスのCssMetaDataを含むことがあります。
      • getCssMetaData

        public List<CssMetaData<? extends Styleable,?>> getCssMetaData​()
        クラスからコピーされた説明: Region
        NodeのCssMetaDataがリフレクションなしでアクセス可能になるように、このメソッドはNode.getClassCssMetaData()に委任する必要があります。
        定義:
        getCssMetaData 、インタフェース: Styleable
        オーバーライド:
        getCssMetaData 、クラス: Region
        戻り値:
        このノードに関連付けられたCssMetaData。スーパークラスのCssMetaDataを含むことがあります。
      • queryAccessibleAttribute

        public Object queryAccessibleAttribute​(AccessibleAttribute attribute,
                                               Object... parameters)
        このメソッドは、属性の値をリクエストするためにアシスティブ・テクノロジによって呼び出されます。

        このメソッドは一般に、特定の役割に必要な属性を実装するためにサブクラスによってオーバーライドされます。
        特定の属性が処理されない場合は、スーパークラスの実装を呼び出す必要があります。

        オーバーライド:
        queryAccessibleAttribute、クラス: Parent
        パラメータ:
        attribute - リクエストされた属性
        parameters - オプションのパラメータ・リスト
        戻り値:
        リクエストされた属性の値
        関連項目:
        AccessibleAttribute