- java.lang.Object
-
- javafx.collections.ListChangeListener.Change<E>
-
- 型パラメータ:
E
- リスト要素の型
- 含まれているインタフェース:
- ListChangeListener<E>
public abstract static class ListChangeListener.Change<E> extends Object
Observablelistに対して行われた変更のレポートを表します。 Changeは1つ以上の実際の変更で構成でき、next()
メソッドで繰り返す必要があります。 各変更は、次のいずれかである必要があります。- 順列変更: この場合、
wasPermutated()
はtrueを返します。 順列はfrom
(これを含む)からto
(これを含まない)の範囲で実行され、getPermutation(int)
メソッドを呼び出して問い合せることができます。 - 追加または削除の変更: この場合、少なくとも
wasAdded()
またはwasRemoved()
のいずれかがtrueを返します。 両方のメソッドがtrueを返す場合、wasReplaced()
もtrueを返します。getRemoved()
メソッドは、リスト内で置換または削除された要素のリストを返します。from
(これを含む)からto
(これを含まない)の範囲は、新しい要素を含むリストのサブリストを示します。 これは半開区間であるため、要素が追加されなかった場合、getFrom()
はgetTo()
と同等になることに注意してください。getAddedSubList()を呼び出すことで、追加された要素のリストを取得できます。
追加/削除の変更別に正しい索引を保持するには、これらの変更をその
from
索引でソートする必要があります。 - 更新変更:
wasUpdated()
は更新の変更時にtrueを返します。from
(これを含む)からto
(これを含まない)の範囲のすべての要素が更新されました。
Change
の他のメソッドを呼び出す前にnext()
メソッドを呼び出す必要があります。reset()
の呼出し後に同様に適用されます。 常に機能するメソッドはgetList()
のみです。一般的な使用方法は、リスナーをフックまたはフック解除(または追加または削除)するために、またはObservableListの各要素の不変条件を保持するためにそのObservableListの変更を監視することです。 これを実行する一般的なコード・パターンは次のようになります。
ObservableList<Item> theList = ...; theList.addListener(new ListChangeListener<Item>() { public void onChanged(Change<tem> c) { while (c.next()) { if (c.wasPermutated()) { for (int i = c.getFrom(); i < c.getTo(); ++i) { //permutate } } else if (c.wasUpdated()) { //update item } else { for (Item remitem : c.getRemoved()) { remitem.remove(Outer.this); } for (Item additem : c.getAddedSubList()) { additem.add(Outer.this); } } } } }); }
警告: このクラスは直接ソース・リストにアクセスして、変更に関する情報を取得します。
これは、リストで別の変更が発生したときに、Changeオブジェクトを効率的に無効にします。
このため、このクラスを別のスレッドで使用することは安全ではありません。
また、後続のすべてのリスナーに対してこのChangeオブジェクトが無効になるため、リスナー内でソース・リストの変更ができないことを意味します。注意: 変更に異なるタイプの変更が複数含まれている場合、これらの変更は次の順序で行う必要があります。順列変更、追加変更または削除変更、更新変更。これは、順列変更により、追加された要素の位置が変更されるため、追加/削除変更の後に順列変更を行うことができないからです。 一方、更新変更はその索引を使用してリストの現在の状態(すべての追加/削除変更が適用されている)を参照するため、追加/削除変更の後に行う必要があります。
- 導入されたバージョン:
- JavaFX 2.0
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 Change(ObservableList<E> list)
リストに対して行われる新しい変更を構築します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 int
getAddedSize()
追加された区間のサイズ。List<E>
getAddedSubList()
追加された要素のみを含むリストのsubListビューを取得するには、getAddedSubList()メソッドを使用します。abstract int
getFrom()
wasAddedがtrueの場合、区間には追加されたすべての値が含まれます。ObservableList<E>
getList()
変更のソース・リスト。protected abstract int[]
getPermutation()
この変更が順列である場合、順列を説明するinteger型配列を返します。int
getPermutation(int i)
これらのメソッドを呼び出すと、発生した順列を監視できます。abstract List<E>
getRemoved()
削除/置換された要素の不変リスト。int
getRemovedSize()
getRemoved()リストのサイズ。abstract int
getTo()
変更区間の最後。abstract boolean
next()
次の変更に移動します。abstract void
reset()
初期ステージにリセットします。boolean
wasAdded()
この変更中に要素が追加されたかどうかを示します。boolean
wasPermutated()
変更が順列のみであったかどうかを示します。boolean
wasRemoved()
この変更中に要素が削除されたかどうかを示します。boolean
wasReplaced()
この変更中に要素が置換されたかどうかを示します。boolean
wasUpdated()
getFrom() (これを含む)からgetTo() (これを含まない)の間の要素が変更されたことを示します。
-
-
-
コンストラクタの詳細
-
Change
public Change(ObservableList<E> list)
リストに対して行われる新しい変更を構築します。- パラメータ:
list
- 変更されたリスト
-
-
メソッドの詳細
-
next
public abstract boolean next()
次の変更に移動します。 初期状態のChangeは無効なため、他のメソッドを呼び出す前にnext()を呼び出す必要があります。 最初のnext()呼出しは、このオブジェクトが最初の変更であることを表します。- 戻り値:
- 次の変更に切り替える場合はtrue、これが最後の変更の場合はfalse。
-
reset
public abstract void reset()
初期ステージにリセットします。 この呼出しの後、最初の変更を処理する前にnext()を呼び出す必要があります。
-
getList
public ObservableList<E> getList()
変更のソース・リスト。- 戻り値:
- 変更されたリスト
-
getFrom
public abstract int getFrom()
wasAddedがtrueの場合、区間には追加されたすべての値が含まれます。 wasPermutatedがtrueの場合、区間は順序が変更された値をマークします。 wasRemovedがtrueかつwasAddedがfalseの場合、getFrom()およびgetTo()は同じ数値(削除された要素が配置されたリスト内の場所)を返す必要があります。- 戻り値:
- 変更に関連する区間の最初(これを含む)
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
getTo
public abstract int getTo()
変更区間の最後。- 戻り値:
- 変更に関連する区間の最後(これを含まない)。
- 例外:
IllegalStateException
- このChangeが初期状態の場合- 関連項目:
getFrom()
-
getRemoved
public abstract List<E> getRemoved()
削除/置換された要素の不変リスト。 リストから削除された要素がない場合、空のリストが返されます。- 戻り値:
- 削除された要素をすべて含むリスト
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
wasPermutated
public boolean wasPermutated()
変更が順列のみであったかどうかを示します。- 戻り値:
- 変更が順列のみであった場合はtrue。
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
wasAdded
public boolean wasAdded()
この変更中に要素が追加されたかどうかを示します。- 戻り値:
- リストに追加された場合はtrue
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
wasRemoved
public boolean wasRemoved()
この変更中に要素が削除されたかどうかを示します。 セットを使用すると、trueを返すwasRemoved()を使用した変更も作成されることに注意してください。 「wasReplaced()
」を参照してください。- 戻り値:
- リストから削除された場合はtrue
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
wasReplaced
public boolean wasReplaced()
この変更中に要素が置換されたかどうかを示します。 リストでセットが呼び出された場合、これは通常trueです。 設定操作は削除操作や追加操作のようにも機能します。通常、このメソッドを直接使用する必要はありません。 上記の
ListChangeListener.Change
の例のように、remove操作を処理してadd操作を実行すると、set操作も効果的に処理されます。- 戻り値:
wasAdded() && wasRemoved()
と同じ- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
wasUpdated
public boolean wasUpdated()
getFrom() (これを含む)からgetTo() (これを含まない)の間の要素が変更されたことを示します。 これは、唯一のオプションのイベント・タイプです。すべてのObservableListsで起動することはできません。- 戻り値:
- 現在の変更が更新変更である場合はtrue。
- 導入されたバージョン:
- JavaFX 2.1
-
getAddedSubList
public List<E> getAddedSubList()
追加された要素のみを含むリストのsubListビューを取得するには、getAddedSubList()メソッドを使用します。 これは実際には、c.getList().subList(c.getFrom(), c.getTo());
を省略しています
for (Node n : change.getAddedSubList()) { // do something }
- 戻り値:
- 追加されたすべての要素を含む、新しく作成されたサブリスト・ビュー。
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
getRemovedSize
public int getRemovedSize()
getRemoved()リストのサイズ。- 戻り値:
- 削除されたアイテムの数
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
getAddedSize
public int getAddedSize()
追加された区間のサイズ。- 戻り値:
- 追加されたアイテムの数
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
getPermutation
protected abstract int[] getPermutation()
この変更が順列である場合、順列を説明するinteger型配列を返します。 この配列は、前の索引から新しい索引に直接マップします。 このメソッドはパブリックからアクセスできないため、配列を安全に返すことができます。 配列の索引0は、リストの索引getFrom()
に対応します。 同様に、最後の索引はgetTo()
に対応します。 このメソッドは、wasPermutated()
メソッドおよびgetPermutation(int)
メソッドによって使用されます。- 戻り値:
- これが順列でない、または順列を含むinteger型配列の場合は空の配列
- 例外:
IllegalStateException
- このChangeが初期状態の場合
-
getPermutation
public int getPermutation(int i)
これらのメソッドを呼び出すと、発生した順列を監視できます。 要素の新しい位置を取得するには、次を呼び出す必要があります。change.getPermutation(oldIndex);
注意: このメソッドのデフォルト実装は、getPermutation()
メソッドから情報を取得します。 このメソッドをオーバーライドする必要はありません。- パラメータ:
i
- この変更より前の要素を含んでいた古い索引- 戻り値:
- 同じ要素の新しい索引
- 例外:
IndexOutOfBoundsException
- iがリストの範囲外の場合IllegalStateException
- これが順列変更でない場合
-
-