javafx场景中的javafx线程异常

javafx场景中的javafx线程异常,java,javafx,timer,Java,Javafx,Timer,关于我的问题:,现在我能够将两个值绑定到一个标签上,并在eclipse的UI上进行更新。由于我的应用程序非常频繁地更新值,因此我在计时器中完成了绑定工作,如图所示: Timeline timer = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) {

关于我的问题:,现在我能够将两个值绑定到一个标签上,并在eclipse的UI上进行更新。由于我的应用程序非常频繁地更新值,因此我在计时器中完成了绑定工作,如图所示:

Timeline timer = new Timeline(new KeyFrame(Duration.seconds(1), new 
EventHandler<ActionEvent>() {

    @Override
    public void handle(ActionEvent event) {
            answerQuesLbl.textProperty().bind(answerConnector.getNoOfAnswers().asString().concat("/").concat(answerConnector.getNoOfQuestions().asString()));
    }
}));

timer.setCycleCount(Timeline.INDEFINITE);
timer.play();

我的构建很好,是否需要为此创建不同类型的线程?

您的代码有两个问题:
1.无需每秒重新绑定。
2.绑定属性在执行更改的线程上接收更改通知,因此,如果在另一个线程上更改了
answerConnector.getNoOfAnswers
,您将得到一个不在FX线程上的异常


您可以更改事件处理程序,以便每秒设置一次文本(时间线确保在FX线程上调用它),或者确保在FX线程上执行原始更改

您的代码有两个问题:
1.无需每秒重新绑定。
2.绑定属性在执行更改的线程上接收更改通知,因此,如果在另一个线程上更改了
answerConnector.getNoOfAnswers
,您将得到一个不在FX线程上的异常


您可以更改事件处理程序,以便每秒设置一次文本(时间线确保在FX线程上调用它),或者确保在FX线程上执行原始更改

这似乎是一个错误,因为绑定没有按预期工作,您试图用时间线修复它。您能创建一个新的接口吗?这样我们就可以看到什么是应答连接器,以及它是如何改变的。然后我们可以正确地解决您的绑定问题。为什么要使用
Timeline
来执行此操作?为什么在每秒钟将这些值绑定到标签的textProperty很重要?由于绑定可以确保绑定属性的更新,您可以简单地绑定它,它应该可以工作。您是否有第二个线程更新值,或者值如何在一秒钟内更改10次?此外,重复的绑定只会使情况变得更糟(在这种情况下,您可以直接更新文本,但不要这样做)。注意:根据您拥有的属性,例如使用
SimpleIntegerProperty
时,UI仅在值确实更改时更改,而不是仅在再次设置时更改。另请参阅以了解限制的方法(以最佳方式)用户界面的更新次数。这似乎是一个问题,因为绑定没有按预期工作。您尝试使用时间线修复它。您能否创建一个时间线,以便我们可以查看
answerConnector
到底是什么以及它是如何更改的。然后我们可以正确地修复您的绑定问题。为什么要使用
timeline
来解决此问题?为什么是我每秒将这些值绑定到标签的textProperty很重要?因为绑定确保绑定属性的更新,所以您可以简单地绑定它,它应该可以工作。您是否有第二个线程更新这些值,或者值是如何在一秒钟内改变10次的?重复的绑定只会使情况更糟(在这种情况下,您可以直接更新文本,但不要这样做)注意:根据您拥有的属性,例如使用
SimpleIntegerProperty
仅当值确实更改时,UI才会更改,而不是仅在再次设置时。另请参阅以获取限制(以最佳方式)的方法UI更新的数量。好奇地想知道为什么它没有在我在eclipse中运行此代码时在FX应用程序线程上出现此异常
。如果没有更新,这几乎是不可能的。可能是由于环境/配置的原因,也可能是一些棘手的事情,如定时调试器干扰线程…C我很想知道,当我在eclipse中运行此代码时,为什么它不会在FX应用程序线程上出现此异常<代码>而不是<代码>。如果没有一个。这几乎是不可能的。可能是由于环境/配置的原因,也可能是一些棘手的事情,如定时调试器干扰线程。。。
Exception in thread "Thread-7" java.lang.IllegalStateException: 
    Not on FX application thread; currentThread = Thread-7
    at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:229)
    at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423)