5

我有可观察的列表ObservableList<Integer> list = FXCollections.observableArrayList()

在 getter 方法中,list我想返回只读的可观察列表,例如:

public ObservableList<Integer> getReadOnlyList() {
     return readOnlyObservableList(list);
}

然后收听只读列表

getReadOnlyList().addListener(listChangeListener);

所以基本上我想返回与原始列表同步的 ObservableList 列表,以便用户可以注册ListChangeListener和观察更改事件,但同时防止用户更改原始列表。

4

2 回答 2

14
ObservableList<Integer> list = FXCollections.observableArrayList();
ObservableList<Integer> roList = FXCollections.unmodifiableObservableList(list);

public ObservableList<Integer> getReadOnlyList() {
  return roList;
}
于 2015-12-01T23:26:59.543 回答
1

我认为最好的方法是使用FXCollections.unmodifiableObservableList(list)方法:

public ObservableList<Integer> getReadOnlyList() {
    return FXCollections.unmodifiableObservableList(list);
}

另请参阅JavaFX ReadOnlyListProperty 不是只读的?

于 2015-11-27T22:53:05.147 回答