gpt4 book ai didi

JavaFX8 : exception when adding items to ObservableList: ConcurrentModificationException

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:55 25 4
gpt4 key购买 nike

我有一个列出月份值的 ChoiceBox,当用户选择一个值时,它会执行以下 lambda 表达式:

private TableView<IncomeFX> tableIncome;
private ChoiceBox<Month> choiceBoxIncomeMonths;

private ChangeListener<Month> setChoiceBoxIncomeMonthsBehaviour(){
ChangeListener<Month> months = (ObservableValue<? extends Month> observable, Month oldValue, Month newValue) -> {
incomesData.clear();
Year selectedYear = choiceBoxIncomeYears.getSelectionModel().getSelectedItem();
ObservableList<IncomeFX> temp = incomeManager.getIncomesOf(selectedYear, newValue);
incomesData.addAll(temp);

};
return months;
}

以及我如何添加监听器:

choiceBoxIncomeMonths.getSelectionModel().selectedItemProperty().addListener(setChoiceBoxIncomeMonthsBehaviour());

当我点击选择框时,我得到:

Exception in thread "JavaFX Application Thread" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:386)
at java.util.AbstractList$Itr.next(AbstractList.java:355)
at java.util.AbstractCollection.addAll(AbstractCollection.java:343)
at javafx.collections.ModifiableObservableListBase.addAll(ModifiableObservableListBase.java:99)
at lite.money.ui.MainUI.lambda$1(MainUI.java:160)
at lite.money.ui.MainUI$$Lambda$120/1680764266.changed(Unknown Source)

它表明问题出在我调用的行中:addAll(temp)我该如何解决这个问题???谢谢

最佳答案

由于您尚未发布所有代码,我猜测您正在另一个尝试与 JavaFX 数据交互的线程上运行代码。当另一个线程尝试执行此操作时,它将引发异常,因为只有 JavaFX 线程应该与数据交互。

我真的无法提供更多建议,因为我没有您正在做的事情的完整代码库来真正说“是的,在 X 行,您有线程 Y 访问位置 X,而它不应该。”

您是否可能将其添加到另一个线程上?您会比我更了解该应用程序,因为我没有更多代码可供使用。

关于JavaFX8 : exception when adding items to ObservableList: ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com