モジュール 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
      • 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)
      • getClassCssMetaData

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