Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaFX中使用Platform.runLater禁用折叠手风琴_Java_Accordion_Javafx 2 - Fatal编程技术网

在JavaFX中使用Platform.runLater禁用折叠手风琴

在JavaFX中使用Platform.runLater禁用折叠手风琴,java,accordion,javafx-2,Java,Accordion,Javafx 2,我想使用答案中建议的解决方案: 为了防止JavaFX中的手风琴完全崩溃 我的问题是:为什么在expandedPaneProperty上添加的侦听器使用Platform.runLater调用SetCollapsable(false) 事实上,如果我在折叠/展开窗格后删除Platform.runLater,它们的内容会因某种原因而消失。那么为什么runLater解决了这个问题呢?的ChangeListener声明: 通常,在这种方法中修改观测值被认为是不好的做法。 本方法指的是: void chan

我想使用答案中建议的解决方案: 为了防止JavaFX中的手风琴完全崩溃

我的问题是:为什么在expandedPaneProperty上添加的侦听器使用Platform.runLater调用SetCollapsable(false)

事实上,如果我在折叠/展开窗格后删除Platform.runLater,它们的内容会因某种原因而消失。那么为什么runLater解决了这个问题呢?

的ChangeListener声明:

通常,在这种方法中修改观测值被认为是不好的做法。

本方法指的是:

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

void已更改(ObservalEvalue您能帮我回答这个问题吗?如果在ChangeListener中我们修改expandedPaneProperty的值,那么您所说的将适用于这里,事实并非如此。在这里,我们只是为expandedPaneProperty的相同值设置可折叠属性,同时更改expandedPane的任何属性-您可以e使其无效。这不是真的。我认为您混淆了“更改值”和“修改相同的值实例”。如果您更改expandedPane的属性,则不会更改其“值”,因此不会通知添加到expandedPane的更改/无效侦听器。我完全理解您的意思,但我不同意您的看法在“javadoc中提到的句子适用”中,为什么这是一个不好的做法?您的推理“会导致内存错误的东西不会被称为不好的做法”是正确的,除了更改“自身changeListener中的expandedPaneProperty”之外不一定会导致无限循环。您可以进行检查,例如,类似于仅当(newValue==null)进行更改。但是,javadoc可能会对此发出警告,因为如果您不小心检查,可能会导致无限循环。@user1859872我认为,您所说的观察值属性是正确的。我在javafx jira上对此问题提出了一个错误,但我认为当某些东西被称为“坏习惯”时通过javadoc,还有更多的事情要做。我还提出了一个手风琴不可折叠的特性请求