У меня есть SetPropertySetProperty не срабатывает событие изменения
private final SetProperty<String> origins = new SimpleSetProperty<>(FXCollections.observableSet(new TreeSet<>()));
Если я изменить это свойство так все работает, как ожидалось (My TableView уведомляется об изменении)
this.origins.setValue(FXCollections.observableSet(new LinkedHashSet<>(origins)));
Если я изменяю это свойство таким образом, мой TableView не уведомлен
this.origins.clear();
this.origins.addAll(origins);
Поскольку для этого свойства используется obse rvable, я бы ожидал, что SetProperty будет уведомлен об изменениях базового набора, а также распространит это событие изменения на его слушателей (в данном случае TableView).
TableView создается следующим образом: FXML:
[..]
<TableView fx:id="table" GridPane.columnIndex="0"
GridPane.rowIndex="1" editable="true"
GridPane.hgrow="always" GridPane.vgrow="always">
<columns>
<TableColumn text="Files">
<cellValueFactory>
<PropertyValueFactory property="origins" />
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
[..]
боб данных выглядит следующим образом:
public abstract class AbstractPeakBean extends VeryAbstractPeakBean implements PeakBean {
private final SetProperty<String> origins = new SimpleSetProperty<>(FXCollections.observableSet(new TreeSet<>()));
public void addAllOrigins(Collection<String> origins) {
this.origins.addAll(origins);
}
@Override
public AbstractPeakBean addOrigin(String origin) {
this.origins.add(origin);
return this;
}
@Override
public Collection<String> getOrigins() {
return Collections.unmodifiableCollection(origins);
}
@Override
public SetProperty<String> originsProperty() {
return origins;
}
@Override
public AbstractPeakBean setAllOrigins(Collection<String> origins) {
this.origins.clear();
this.origins.addAll(origins);
this.origins.setValue(FXCollections.observableSet(new LinkedHashSet<>(origins)));
return this;
}
public void setOrigins(Collection<String> origins) {
this.origins.clear();
this.origins.addAll(origins);
}
}
Вы не указали код, который позволяет нам воспроизвести проблему. Также неясно, как работает «TableView» с набором ... Также набор, содержащий те же элементы, может быть легко сравним с исходным набором ... – fabian