Spec-Zone.ru › OpenJavaFX 8
javafx.collections

Класс ListChangeListener.Change<E>

java.lang.Object
  • javafx.collections.ListChangeListener.Change<E>

Параметры типа:

E - тип элемента списка

Включающий интерфейс:

ListChangeListener<E>



public abstract static class ListChangeListener.Change<E>
extends Object
Представляет отчёт о внесённых изменениях в ObservableList. Изменение может состоять из одного или нескольких фактических изменений и должно итерироваться методом next(). Каждое изменение должно быть одним из следующих:
  • Изменение перестановки : в этом случае wasPermutated() возвращает true. Перестановка произошла в диапазоне от from (включительно) до to (исключительно) и может быть запрошена вызовом метода getPermutation(int).
  • Добавление или удаление : в этом случае хотя бы один из методов wasAdded(), wasRemoved() возвращает true. Если оба метода возвращают true, wasReplaced() также вернёт true.

    Метод getRemoved() возвращает список элементов, которые были заменены или удалены из списка.

    Диапазон от from (включительно) до to (исключительно) обозначает подсписок списка, содержащий новые элементы. Обратите внимание, что это полуоткрытый интервал, поэтому если элементы не добавлялись, getFrom() равно getTo().

    Список добавленных элементов можно получить, вызвав метод getAddedSubList().

    Обратите внимание, что для поддержания правильных индексов отдельных изменений добавления/удаления, эти изменения должны сортироваться по их from индексу.

  • Изменение обновления : wasUpdated() вернёт true при изменении обновления. Все элементы между from (включительно) и to (исключительно) были обновлены.
Важно: Необходимо вызвать метод next() перед вызовом любого другого метода Change. То же самое относится и после вызова reset(). Единственный метод, который работает в любое время, это getList().

Типичный способ использования — наблюдение за изменениями в ObservableList для подключения или отключения (или добавления или удаления слушателя) или для поддержания некоторого инварианта для каждого элемента в ObservableList. Типичный шаблон кода для этого выглядит примерно так:

ObservableList 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()
    Если это изменение — перестановка, он возвращает целочисленный массив, описывающий перестановку.
    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() (исключительно) изменились.
    • Методы, унаследованные от класса java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Подробное описание конструкторов

    • Change

      public Change(ObservableList<E> list)
      Создает новую запись изменения списка.

      Параметры:

      list - измененный список

  • Подробное описание методов

    • next

      public abstract boolean next()
      Переходит к следующему изменению. Изменение в начальном состоянии недействительно и требует вызова next() перед вызовом других методов. Первый вызов next() сделает этот объект представителем первого изменения.

      Возвращает:

      true, если переключился на следующее изменение, false, если это последнее изменение.

    • reset

      public abstract void reset()
      Возвращает к начальному состоянию. После этого вызова, необходимо вызвать next() перед работой с первым изменением.
    • getList

      public ObservableList<E> getList()
      Исходный список изменений.

      Возвращает:

      измененный список

    • getFrom

      public abstract int getFrom()
      Если wasAdded истинно, интервал содержит все значения, которые были добавлены. Если wasPermutated истинно, интервал отмечает значения, которые были переставлены. Если wasRemoved истинно и wasAdded ложно, getFrom() и getTo() должны возвращать одно и то же число - место, где были расположены удаленные элементы в списке.

      Возвращает:

      начало (включительно) интервала, связанного с изменением

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • getTo

      public abstract int getTo()
      Конец интервала изменения.

      Возвращает:

      конец (исключая) интервала, связанного с изменением.

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

      См. также:

      getFrom()

    • getRemoved

      public abstract List<E> getRemoved()
      Неизменяемый список удаленных/замененных элементов. Если из списка не было удалено элементов, возвращается пустой список.

      Возвращает:

      список со всеми удаленными элементами

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • wasPermutated

      public boolean wasPermutated()
      Указывает, было ли изменение только перестановкой.

      Возвращает:

      true, если изменение было просто перестановкой.

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • wasAdded

      public boolean wasAdded()
      Указывает, были ли добавлены элементы во время этого изменения.

      Возвращает:

      true, если в список что-то было добавлено

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • wasRemoved

      public boolean wasRemoved()
      Указывает, были ли удалены элементы во время этого изменения. Обратите внимание, что использование set также приведет к изменению с wasRemoved(), возвращающим true. См. wasReplaced().

      Возвращает:

      true, если из списка что-то было удалено

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • wasReplaced

      public boolean wasReplaced()
      Указывает, были ли элементы заменены во время этого изменения. Это обычно истинно, когда на списке вызывается метод set. Операция set будет действовать как операция remove и add одновременно.

      Обычно нет необходимости использовать этот метод напрямую. Обработка операции удаления, а затем операции добавления, как в примере above, эффективно обрабатывает также операцию set.

      Возвращает:

      то же самое as wasAdded() && wasRemoved()

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • 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 - если это изменение находится в начальном состоянии

    • getRemovedSize

      public int getRemovedSize()
      Размер списка getRemoved().

      Возвращает:

      количество удаленных элементов

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • getAddedSize

      public int getAddedSize()
      Размер интервала, который был добавлен.

      Возвращает:

      количество добавленных элементов

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • getPermutation

      protected abstract int[] getPermutation()
      Если это изменение является перестановкой, оно возвращает целочисленный массив, описывающий перестановку. Этот массив непосредственно отображает предыдущие индексы на новые. Этот метод не является публично доступным и поэтому может безопасно возвращать массив. Индекс 0 массива соответствует индексу getFrom() списка. То же самое относится к последнему индексу и getTo(). Метод используется методами wasPermutated() и getPermutation(int).

      Возвращает:

      пустой массив, если это не перестановка, или целочисленный массив, содержащий перестановку

      Выбрасывает:

      IllegalStateException - если это изменение находится в начальном состоянии

    • getPermutation

      public int getPermutation(int i)
      Вызывая этот метод, вы можете наблюдать произошедшую перестановку. Для получения нового положения элемента необходимо вызвать:
      change.getPermutation(oldIndex);
      Примечание: реализация по умолчанию этого метода использует информацию из метода getPermutation(). Вам не нужно переопределять этот метод.

      Параметры:

      i - старый индекс, содержащий элемент до этого изменения

      Возвращает:

      новый индекс того же элемента

      Выбрасывает:

      IndexOutOfBoundsException - если i выходит за пределы списка

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API