モジュール javafx.controls
パッケージ javafx.scene.control

クラスTextFormatter.Change

  • すべての実装されたインタフェース:
    Cloneable
    含まれているクラス:
    TextFormatter<V>

    public static final class TextFormatter.Change
    extends Object
    implements Cloneable
    TextInputControlのコンテンツまたは選択内容の変更を表す状態が含まれます。 TextInputControlのテキストが変更されるたびに、TextInputControlに登録されているformatterにこのオブジェクトが渡されます。

    このクラスには、コントロールに対してどのような変更が行われたかを判別するための状態メソッドとコンビニエンス・メソッドが含まれます。 また、開発者がコントロールのその他の状態を問合せできるように、TextInputControlそのものへの参照も含まれています。 コントロールの状態をformatter handler内部から直接変更しないでください。

    テキストのChangeは、range (getRangeStart(), getRangeEnd()) and text (getText()によって記述されます。 次の3つのケースが考えられます。

    • 一部のテキストが削除された: この場合、textは空となり、rangeは削除されたテキストの範囲を示します。 たとえば、"Lorem ipsum dolor sit amet"というテキストで2番目の語を削除すると、rangeは(6,11)で、textは空になります。 同様に、別のテキストまたは追加のテキストを削除する場合は、rangeを設定します。 2番目の語ではなく最初の語を削除する場合は、setRange(0,5)を呼び出します
    • 一部のテキストが追加された: この場合、rangeは空ですが(何も削除されていない)、その値はまだ重要です。 rangeの開始と終了はどちらも、新しいテキストが追加された索引を指します。 たとえば、"Lorem dolor sit amet"に"ipsum"を追加すると、rangeが(6,6)に変更され、textに文字列"ipsum"が追加されます。
    • 一部のテキストが置換された: 前述の2つのケースの組合せ。 textrangeはどちらも空ではありません。 Changeではrangeのテキストが削除されてtextで置換されます。 古いテキストのかわりに新しいテキストがrangeの先頭に追加されます。 たとえば、一部のテキストが削除する場合、新しいテキスト(setText("new text"))を設定して、プレースホルダ・テキストでそれを置換するだけです

    Changeは変更可能ですが、監視可能ではありません。 これは、1つの変更の存続期間のみ使用できます。 Changeはフォーマッタ内部から変更することが意図されています。

    導入されたバージョン:
    JavaFX 8u40
    • メソッドの詳細

      • getControl

        public final Control getControl()
        この変更に関連付けられたコントロールを取得します。
        戻り値:
        この変更に関連付けられたコントロール。 nullは不可。
      • setRange

        public final void setRange​(int start,
                                   int end)
        開始値と終了値が互いに有効になるように両者を一緒に割り当てるメソッド。 開始は終了以下である必要があります。
        パラメータ:
        start - 新しい開始値。 有効な開始値である必要があります
        end - 新しい終了値。 有効な終了値である必要があります
      • getCaretPosition

        public final int getCaretPosition()
        新しいキャレット位置を取得します。 この値は常に、0より大きくgetControlNewText().getLength()}以下である必要があります
        戻り値:
        新しいキャレット位置
      • getAnchor

        public final int getAnchor()
        新しいアンカーを取得します。 この値は常に、0より大きくgetControlNewText().getLength()}以下である必要があります
        戻り値:
        新しいアンカー位置
      • getControlCaretPosition

        public final int getControlCaretPosition()
        コントロールの現在のキャレット位置を取得します。
        戻り値:
        前のキャレット位置
      • getControlAnchor

        public final int getControlAnchor()
        コントロールの現在のアンカー位置を取得します。
        戻り値:
        前のアンカー
      • selectRange

        public final void selectRange​(int newAnchor,
                                      int newCaretPosition)
        選択範囲を設定します。 アンカー位置およびキャレット位置の値は常に、0より大きくgetControlNewText().getLength()}以下である必要があります。 ここでは順序依存があり、新しいテキストの指定後に位置を指定する必要があります。
        パラメータ:
        newAnchor - 新しいアンカー位置
        newCaretPosition - 新しいキャレット位置
      • getSelection

        public final IndexRange getSelection()
        この変更の選択を取得します。 選択範囲は現在のコントロール・テキストではなくgetControlNewText()を参照することに注意してください。
        戻り値:
        この変更の選択範囲。
      • setAnchor

        public final void setAnchor​(int newAnchor)
        アンカーを設定します。 アンカーの値は常に、0より大きくgetControlNewText().getLength()}以下である必要があります。 ここでは順序依存があり、新しいテキストの指定後に位置を指定する必要があります。
        パラメータ:
        newAnchor - 新しいアンカー位置
      • setCaretPosition

        public final void setCaretPosition​(int newCaretPosition)
        キャレット位置を設定します。 キャレット位置の値は常に、0より大きくgetControlNewText().getLength()}以下である必要があります。 ここでは順序依存があり、新しいテキストの指定後に位置を指定する必要があります。
        パラメータ:
        newCaretPosition - 新しいキャレット位置
      • getText

        public final String getText()
        この変更で使用するテキストを取得します。 たとえば、追加される新しいテキストや、開始から終了までの範囲内のコントロールのテキスト全部を置換するテキストなどです。 通常、範囲が削除される場合のみ、これは空の文字列になります。
        戻り値:
        この変更に関連するテキスト。 nullは不可。
      • setText

        public final void setText​(String value)
        この変更で使用するテキストを設定します。 これは、開始から終了までの範囲が存在する場合にその範囲を置換する場合や、start == endで表される位置にテキストを挿入する場合に使用します。
        パラメータ:
        value - テキスト。 nullを指定することはできません。
      • getControlText

        public final String getControlText()
        これは変更前のコントロールの全文です。 この変更後にテキストを取得するには、getControlNewText()を使用します。
        戻り値:
        コントロールの前のテキスト
      • getControlNewText

        public final String getControlNewText()
        この変更後にコントロールで使用される新しいテキスト全部を取得します。 コントロール(TextFieldなど)によっては、(改行を取り除くなど)変更の実行後に追加のフィルタ処理を行うものもあるため、コントロールにコンテンツとして最終的に設定されるテキストがnewTextになると想定することはできませんが、新しいキャレット位置および新しいアンカー位置を計算する目的では、これを想定することは間違いではありません(コントロールが追加の文字を取り除いた後で、提供されたこれらの値が必要に応じて変更されるため)。
        戻り値:
        コントロールは、このコールの時点で、このChangeオブジェクトでstart、endおよびtextプロパティに設定された状態に基づいて新しいテキストを提示します。
      • isAdded

        public final boolean isAdded()
        この変更がテキストの追加に対応して行われたかどうかを取得します。 フォーマッタ(セッターの1つ)によってChangeオブジェクトが変更された後で、このメソッドの戻り値が変更されることはありません。 最終的にテキストが追加されるかどうかではなく、この変更がテキストの追加の結果として起動されたかどうかに関する答えが返されます。
        戻り値:
        テキストが追加された結果であった場合は、true
      • isDeleted

        public final boolean isDeleted()
        この変更がテキストの削除に対応して行われたかどうかを取得します。 フォーマッタ(セッターの1つ)によってChangeオブジェクトが変更された後で、このメソッドの戻り値が変更されることはありません。 最終的にテキストが削除されるかどうかではなく、この変更がテキストの削除の結果として起動されたかどうかに関する答えが返されます。
        戻り値:
        テキストが削除された結果であった場合は、true
      • isReplaced

        public final boolean isReplaced()
        この変更がテキストの置換に対応して行われたかどうかを取得します。 フォーマッタ(セッターの1つ)によってChangeオブジェクトが変更された後で、このメソッドの戻り値が変更されることはありません。 最終的にテキストが置換されるかどうかではなく、この変更がテキストの置換の結果として起動されたかどうかに関する答えが返されます。
        戻り値:
        テキストが置換された結果であった場合は、true
      • isContentChange

        public final boolean isContentChange()
        コンテンツの変更は、追加、削除または置換変更のいずれかです。 基本的に、これはc.isAdded() || c.isDeleted() のショートカットです。
        戻り値:
        コンテンツが変更された場合はtrue