- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- javafx.collections.ObservableListBase<E>
-
- 参数类型
-
E
- 列表中包含的元素的类型
- All Implemented Interfaces:
-
Iterable<E>
,Collection<E>
,List<E>
,Observable
,ObservableList<E>
public abstract class ObservableListBase<E> extends AbstractList<E> implements ObservableList<E>
抽象类作为ObservableList
实现的基类。 基类为实现类提供了两个功能。- 听众处理通过实现
addListener
和removeListener
方法。 提供fireChange(javafx.collections.ListChangeListener.Change)
方法用于通知Change
对象的收听者。 - 建立
ListChangeListener.Change
对象的方法。 有各种各样的方法叫做next*
,像nextAdd(int, int)
的列表中的新项目,或nextRemove(int, java.lang.Object)
一个项目从列表中删除。这些方法必须始终包含在
beginChange()
和endChange()
中 。参见下面的例子。
public void removeOddIndexes() { beginChange(); try { for (int i = 1; i < size(); ++i) { remove(i); } } finally { endChange(); } } public void remove(int i) { beginChange(); try { E removed = ... //do some stuff that will actually remove the element at index i nextRemove(i, removed); } finally { endChange(); } }
所述try
/finally
在示例块仅需要,如果有一个内发生异常的可能性beginChange()
/endChange()
块注意:如果要创建可修改的
ObservableList
实现,请考虑使用ModifiableObservableListBase
作为超类。注意:为了创建具有顺序访问列表,你应该重写
AbstractList.listIterator()
,AbstractList.iterator()
方法和使用它们AbstractList.get(int)
,AbstractCollection.size()
等方法相应。- 从以下版本开始:
- JavaFX 8.0
- 另请参见:
-
ObservableList
,ListChangeListener.Change
,ModifiableObservableListBase
-
-
Field Summary
-
Fields inherited from class java.util.AbstractList
modCount
-
-
构造方法摘要
构造方法 Constructor 描述 ObservableListBase()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
addAll(E... elements)
用于var-arg添加元素的方便方法。void
addListener(InvalidationListener listener)
添加一个InvalidationListener
,当Observable
变得无效时,它将被通知。void
addListener(ListChangeListener<? super E> listener)
将侦听器添加到此可观察列表中。protected void
beginChange()
开始改变块protected void
endChange()
结束更改块。protected void
fireChange(ListChangeListener.Change<? extends E> change)
通知所有听众的变化protected boolean
hasListeners()
如果为此列表注册了一些监听器,则返回true。protected void
nextAdd(int from, int to)
对更改添加新的添加操作。protected void
nextPermutation(int from, int to, int[] perm)
为更改添加新的置换操作。protected void
nextRemove(int idx, E removed)
在删除单个项目的情况下,添加新的删除操作。protected void
nextRemove(int idx, List<? extends E> removed)
在更改中添加一个新的删除操作,删除多个项目。protected void
nextReplace(int from, int to, List<? extends E> removed)
为更改添加新的替换操作。protected void
nextSet(int idx, E old)
为更改添加新的集合操作。protected void
nextUpdate(int pos)
对更改添加新的更新操作。void
remove(int from, int to)
一种调用sublist(from, to).clear()
简化方法。boolean
removeAll(E... elements)
void
removeListener(InvalidationListener listener)
从监听器列表中删除给定的监听器,当Observable
的值变为无效时通知Observable
。void
removeListener(ListChangeListener<? super E> listener)
尝试从此可观察列表中删除侦听器。boolean
retainAll(E... elements)
boolean
setAll(E... elements)
清除ObservableList并添加所有传递给var-args的元素。boolean
setAll(Collection<? extends E> col)
清除ObservableList并添加集合中的所有元素。-
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString
-
Methods inherited from class java.util.AbstractList
add, add, addAll, clear, equals, get, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
Methods inherited from interface java.util.List
add, add, addAll, addAll, clear, contains, containsAll, equals, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, of, of, of, of, of, of, of, of, of, of, of, of, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface javafx.collections.ObservableList
filtered, sorted, sorted
-
-
-
-
方法详细信息
-
nextUpdate
protected final void nextUpdate(int pos)
对更改添加新的更新操作。注意 :需要在
endChange()
块内beginChange()
。注意 :需要反映列表的当前状态。
- 参数
-
pos
- 更新元素所在列表中的位置。
-
nextSet
protected final void nextSet(int idx, E old)
为更改添加新的集合操作。 相当于nextRemove(idx); nextAdd(idx, idx + 1);
。注意 :需要在内部
beginChange()
endChange()
块。注意 :需要反映列表的当前状态。
- 参数
-
idx
- 设置的项目的索引 -
old
- 旧值在idx
位置。
-
nextReplace
protected final void nextReplace(int from, int to, List<? extends E> removed)
为更改添加新的替换操作。 相当于nextRemove(from, removed); nextAdd(from, to);
注 :需要内部被称为
beginChange()
/endChange()
块。注意 :需要反映列表的当前状态。
- 参数
-
from
- 项目被替换的索引 -
to
- 新项目所在范围的最终索引(独占) -
removed
- 已删除的项目列表
-
nextRemove
protected final void nextRemove(int idx, List<? extends E> removed)
在更改中添加一个新的删除操作,删除多个项目。注意 :需要在内部
beginChange()
endChange()
块。注意 :需要反映列表的当前状态。
- 参数
-
idx
- 删除项目的索引 -
removed
- 已删除的项目列表
-
nextRemove
protected final void nextRemove(int idx, E removed)
在删除单个项目的情况下,添加新的删除操作。注 :需要内部被称为
beginChange()
/endChange()
块。注意 :需要反映列表的当前状态。
- 参数
-
idx
- 删除项目的索引 -
removed
- 已删除的项目
-
nextPermutation
protected final void nextPermutation(int from, int to, int[] perm)
为更改添加新的置换操作。 索引"i"
上的排列包含索引,其中来自索引"i"
的项目被移动。没有必要提供可能的最小排列。 始终使用
nextPermutation(0, size(), permutation);
调用此方法是nextPermutation(0, size(), permutation);
注意 :需要在内部
beginChange()
endChange()
块。注意 :需要反映列表的当前状态。
- 参数
-
from
- 标记被from
的范围的开始(包括) -
to
- 标记排列的范围的结束(排他) -
perm
- 该范围内的排列。 即使是from != 0
,数组也应该包含列表的索引。 因此,这种排列不包含范围(0, from)
索引
-
nextAdd
protected final void nextAdd(int from, int to)
对更改添加新的添加操作。 没有必要提供添加项目的列表,因为它们可以直接在指定索引下的列表中找到。注意 :需要在
endChange()
块内beginChange()
。注意 :需要反映列表的当前状态。
- 参数
-
from
- 标记添加的范围的开始(含) -
to
- 标记添加的范围的结束(排他)
-
beginChange
protected final void beginChange()
开始改变块 必须先调用next*
方法之前调用。 对于每个beginChange()
,必须有一个对应的endChange()
调用。beginChange()
呼叫可以被嵌套在beginChange()
/endChange()
块。- 另请参见:
-
endChange()
-
endChange
protected final void endChange()
结束更改块。 如果块是ObservableList
的最外部块,则构建Change
并通知所有监听器。结束嵌套块不会触发通知。
- 另请参见:
-
beginChange()
-
addListener
public final void addListener(InvalidationListener listener)
描述从接口Observable
复制添加一个InvalidationListener
,当Observable
无效时,它将被通知。 如果同一个监听器被多次添加,那么它将被多次通知。 也就是说,没有检查确保唯一性。请注意,相同的实际
InvalidationListener
实例可能会安全注册为不同的Observables
。Observable
存储对侦听器的强烈引用,这将阻止侦听器被垃圾回收,并可能导致内存泄漏。 建议您在使用后通过调用removeListener
注销监听器,或者使用WeakInvalidationListener
的一个实例来避免这种情况。- Specified by:
-
addListener
在接口Observable
- 参数
-
listener
-listener
注册 - 另请参见:
-
Observable.removeListener(InvalidationListener)
-
removeListener
public final void removeListener(InvalidationListener listener)
说明从界面Observable
复制从监听器列表中删除给定的监听器,当Observable
的值变为无效时通知Observable
。如果给定的侦听器以前没有被注册过(即它从未被添加过),那么这个方法调用是一个无操作的。 如果以前已经添加,那么它将被删除。 如果多次添加,那么只有第一次出现将被删除。
- Specified by:
-
removeListener
在接口Observable
- 参数
-
listener
- 要删除的侦听器 - 另请参见:
-
Observable.addListener(InvalidationListener)
-
addListener
public final void addListener(ListChangeListener<? super E> listener)
说明从界面ObservableList
复制将侦听器添加到此可观察列表中。- Specified by:
-
addListener
在接口ObservableList<E>
- 参数
-
listener
- 用于监听列表更改的监听器
-
removeListener
public final void removeListener(ListChangeListener<? super E> listener)
说明从接口ObservableList
复制尝试从此可观察列表中删除侦听器。 如果监听者没有附加到此列表中,则不会发生任何事情。- Specified by:
-
removeListener
在接口ObservableList<E>
- 参数
-
listener
- 要删除的侦听器
-
fireChange
protected final void fireChange(ListChangeListener.Change<? extends E> change)
通知所有听众的变化- 参数
-
change
- 表示所做更改的对象
-
hasListeners
protected final boolean hasListeners()
如果为此列表注册了一些监听器,则返回true。- 结果
- 如果有这个列表的侦听器,则为true
-
addAll
public boolean addAll(E... elements)
说明从界面ObservableList
复制用于var-arg添加元素的方便方法。- Specified by:
-
addAll
在接口ObservableList<E>
- 参数
-
elements
- 要添加的元素 - 结果
- true(由Collection.add(E)指定)
-
setAll
public boolean setAll(E... elements)
说明从接口ObservableList
复制清除ObservableList并添加所有传递给var-args的元素。- Specified by:
-
setAll
在接口ObservableList<E>
- 参数
-
elements
- 要设置的元素 - 结果
- true(由Collection.add(E)指定)
-
setAll
public boolean setAll(Collection<? extends E> col)
描述从接口ObservableList
复制清除ObservableList并添加集合中的所有元素。- Specified by:
-
setAll
在接口ObservableList<E>
- 参数
-
col
- 将添加到此observableArrayList的元素的集合 - 结果
- true(由Collection.add(E)指定)
-
removeAll
public boolean removeAll(E... elements)
说明从接口ObservableList
复制- Specified by:
-
removeAll
在接口ObservableList<E>
- 参数
-
elements
- 要删除的元素 - 结果
- 如果列表因此调用而更改,则为true
-
retainAll
public boolean retainAll(E... elements)
描述从接口ObservableList
复制- Specified by:
-
retainAll
在接口ObservableList<E>
- 参数
-
elements
- 要保留的元素 - 结果
- 如果列表因此调用而更改,则为true
-
remove
public void remove(int from, int to)
描述从接口ObservableList
复制一种调用sublist(from, to).clear()
简化方法。 由于这是一个常见的操作,ObservableList具有方便使用的方法。- Specified by:
-
remove
在接口ObservableList<E>
- 参数
-
from
- 要删除的范围的开始(含) -
to
- 删除的范围的结束(排他)
-
-