JavaFX自定义节点-强制FX线程
我正在制作一些自定义节点,如下所示:JavaFX自定义节点-强制FX线程,java,javafx,Java,Javafx,我正在制作一些自定义节点,如下所示: public final class Indicator extends HBox { public Indicator() { Label label = new Label(); indicatorText = label.textProperty(); getChildren().add(label); } private final StringProperty indica
public final class Indicator extends HBox {
public Indicator() {
Label label = new Label();
indicatorText = label.textProperty();
getChildren().add(label);
}
private final StringProperty indicatorText;
public final String getIndicatorText() {
return indicatorText.get();
}
public final void setIndicatorText(String val) {
indicatorText.set(val);
}
public StringProperty indicatorText() {
return indicatorText;
}
}
问题是:
有没有办法在Fx应用程序线程上强制使用节点?我应该在节点的每个方法/构造函数中检查Fx线程吗?或者这不是必要的?
我在问,因为在某些情况下,像这样->
当属性在Fx主线程之外使用时,JavaFX不会引发异常,我真的希望避免它。是的,这就是您要做的:检查当前运行的线程,如果不是Fx线程,则引发异常 然而,这可能限制太多:节点上的许多代码可以在其他线程中运行而不会出现问题 事实上,如果节点未附加到场景图,则节点中的所有代码都可以在其他线程中运行
更好的解决方案是为运行代码的每个线程实现一个全面的解决方案,并在开发/测试阶段处理并发异常。platform.isFXApplicationThread。。但你为什么想要它,真的?只要节点不是活动线程的一部分,就可以在fx线程之外配置节点的属性scenegraph@kleopatra是否有任何方法可以确定节点是否是除getChildren().contains()之外的场景的一部分?还是我应该放弃这个想法?