- java.lang.Object
-
- 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つのケースの組合せ。
textとrangeはどちらも空ではありません。 Changeではrangeのテキストが削除されてtextで置換されます。 古いテキストのかわりに新しいテキストがrangeの先頭に追加されます。 たとえば、一部のテキストが削除する場合、新しいテキスト(setText("new text"))を設定して、プレースホルダ・テキストでそれを置換するだけです
Changeは変更可能ですが、監視可能ではありません。 これは、1つの変更の存続期間のみ使用できます。 Changeはフォーマッタ内部から変更することが意図されています。
- 導入されたバージョン:
- JavaFX 8u40
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 intgetAnchor()新しいアンカーを取得します。intgetCaretPosition()新しいキャレット位置を取得します。ControlgetControl()この変更に関連付けられたコントロールを取得します。intgetControlAnchor()コントロールの現在のアンカー位置を取得します。intgetControlCaretPosition()コントロールの現在のキャレット位置を取得します。StringgetControlNewText()この変更後にコントロールで使用される新しいテキスト全部を取得します。StringgetControlText()これは変更前のコントロールの全文です。intgetRangeEnd()変更のためにTextInputControl.getText()への終了索引を取得します。intgetRangeStart()変更のためにTextInputControl.getText()への開始索引を取得します。IndexRangegetSelection()この変更の選択を取得します。StringgetText()この変更で使用するテキストを取得します。booleanisAdded()この変更がテキストの追加に対応して行われたかどうかを取得します。booleanisContentChange()コンテンツの変更は、追加、削除または置換変更のいずれかです。booleanisDeleted()この変更がテキストの削除に対応して行われたかどうかを取得します。booleanisReplaced()この変更がテキストの置換に対応して行われたかどうかを取得します。voidselectRange(int newAnchor, int newCaretPosition)選択範囲を設定します。voidsetAnchor(int newAnchor)アンカーを設定します。voidsetCaretPosition(int newCaretPosition)キャレット位置を設定します。voidsetRange(int start, int end)開始値と終了値が互いに有効になるように両者を一緒に割り当てるメソッド。voidsetText(String value)この変更で使用するテキストを設定します。
-
-
-
メソッドの詳細
-
getControl
public final Control getControl()
この変更に関連付けられたコントロールを取得します。- 戻り値:
- この変更に関連付けられたコントロール。 nullは不可。
-
getRangeStart
public final int getRangeStart()
変更のためにTextInputControl.getText()への開始索引を取得します。 これは常に、0より大きくTextInputControl.getLength()以下の値になります。- 戻り値:
- 開始索引
-
getRangeEnd
public final int getRangeEnd()
変更のためにTextInputControl.getText()への終了索引を取得します。 これは常に、getRangeStart()より大きくTextInputControl.getLength()以下の値になります。- 戻り値:
- 終了索引
-
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
-
-