我想使用答案中建议的解决方案:
Prevent an accordion in JavaFX from collapsing
为了防止JavaFX中的Accordion完全崩溃。

我的问题是:为什么在ExpandedPaneProperty上添加的侦听器为何使用Platform.runLater来调用setCollapsible(false)?

实际上,如果我删除了Platform.runLater,则在折叠/展开窗格之后,它们的内容会由于某种原因而消失。那么,为什么runLater可以解决该问题?

最佳答案

ChangeListener 的documentation指出:

通常认为在此方法中修改观测值是不好的做法。

该方法引用的位置:

void changed(ObservableValue<? extends T> observable, T oldValue, T newValue);

RunLater 可确保在JavaFX Application Thread的下一个运行的上对窗格进行修改,因此在安全的时候进行修改。

07-24 18:58