- 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
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 TextFormatter.Changeclone()このオブジェクトのコピーを作成して、返します。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)この変更で使用するテキストを設定します。StringtoString()オブジェクトの文字列表現を返します。
-
-
-
メソッドの詳細
-
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
-
toString
public String toString()
次のクラスからコピーされた説明:Objectオブジェクトの文字列表現を返します。 一般に、toStringメソッドは、このオブジェクトをテキストで表す文字列を返します。 この結果は、人間が読める簡潔で有益な情報であるべきです。 すべてのサブクラスで、このメソッドをオーバーライドすることをお勧めします。クラス
ObjectのtoStringメソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字@、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。 つまり、このメソッドは次の値と等しい文字列を返します。getClass().getName() + '@' + Integer.toHexString(hashCode())
-
clone
public TextFormatter.Change clone()
次のクラスからコピーされた説明:Objectこのオブジェクトのコピーを作成して、返します。 コピーの正確な意味合いは、オブジェクトのクラスによって異なります。 一般的な意図は、任意のオブジェクトxについて、次の式
がtrueであり、次の式x.clone() != x
がx.clone().getClass() == x.getClass()
trueになることですが、これらは絶対的な要件ではありません。 また次の式
がx.clone().equals(x)
trueになりますが、これは絶対的な要件ではありません。慣例上、返されたオブジェクトは、
super.cloneを呼び出すことによって取得するようにしてください。 クラスとそのすべてのスーパー・クラス(Objectを除く)がこの規則に従っている場合は、x.clone().getClass()== x.getClass()が成立します。通常、このメソッドにより返されるオブジェクトは、このオブジェクト(複製されています)から独立している必要があります。 この独立性を実現するには、
super.cloneによって返されたオブジェクトを返す前に、その1つ以上のフィールドを変更することが必要になる場合があります。 これは、通常、複製するオブジェクトの内部深層構造を構成する可変オブジェクトのコピー、およびこれらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ・フィールドまたは不変オブジェクトへの参照しか含まれていない場合は、通常、super.cloneによって返されたオブジェクト内のフィールドを変更する必要がありません。クラス
Objectのメソッドcloneは、特定のクローニング操作を実行します。 まず、このオブジェクトのクラスがインタフェースCloneableを実装していない場合は、CloneNotSupportedExceptionがスローされます。 すべての配列がインタフェースCloneableを実装していると見なされること、および配列型T[]のcloneメソッドの戻り値の型はT[](ここで、Tは任意の参照またはプリミティブ型)です。 実装していない場合、このメソッドはこのオブジェクトのクラスの新しいインスタンスを生成し、そのフィールドをすべて、このオブジェクトの対応する各フィールドの内容で初期化します。これは代入と同様で、フィールドの内容自身が複製されるのではありません。 つまりこのメソッドは、オブジェクトのシャロー・コピーを生成しますが、ディープ・コピーは生成しません。クラス
Object自体はインタフェースCloneableを実装していないため、クラスがObjectであるオブジェクトに対してcloneメソッドを呼び出すと、実行時に例外がスローされます。
-
-