刷新标签无法正常工作javafx

刷新标签无法正常工作javafx,javafx,Javafx,我在刷新标签时遇到问题。 我有这样一个函数: public void majMontantPaye(Double montantPaye) { System.out.println("montant paye : "+montantPaye); setMontantPaye(this.montantPaye+montantPaye); Platform.runLater(() -> labelMontantPaye.setText(String.form

我在刷新标签时遇到问题。 我有这样一个函数:

    public void majMontantPaye(Double montantPaye) {
    System.out.println("montant paye : "+montantPaye);

    setMontantPaye(this.montantPaye+montantPaye);

    Platform.runLater(() -> labelMontantPaye.setText(String.format("%.2f", this.montantPaye)+Messages.getMessage("0052")));
}
我的函数是由API调用的。此API与允许插入硬币的机器通信。我的函数必须显示机器中插入的总和

问题是,当我同时在机器中插入大量硬币时,我的功能是正确调用检测到的每一枚硬币,因此
System.out.println(“montant paye:+montantPaye”)正确显示检测到的每一枚硬币,但标签“labelMontantPaye”不会刷新到检测到的每一枚硬币。刚刚做完总数

我猜UI没有正确刷新,但我不知道如何正确刷新标签


请帮忙,对不起,我是法国人。

您可以遵循以下逻辑:

如评论中所述: 使用Platform.runLater(…)将任务排入
JavaFXThread
队列。但当你有很多“事件”时,你只能看到最后的结果。(也可能是之前的短时间内)


您可以遵循以下逻辑:

如评论中所述: 使用Platform.runLater(…)将任务排入
JavaFXThread
队列。但当你有很多“事件”时,你只能看到最后的结果。(也可能是之前的短时间内)


该方法是如何调用的?也许在应用程序线程上?此外,
Messages.getMessage(“0052”)
是一个长期运行的操作吗?是否有同步的块/方法可以阻止此操作,直到某些长时间运行的代码在不同的线程上执行?我的函数在不同的线程中执行。我有一个
if(Platform.isFxApplicationThread()){MainApp.getInstance.maincontrollergetlistachatcontroller.majMontantPaye(_resteDu);}else{Platform.runLater(()->MainApp.getInstance.maincontrollergetlistachatcontroller.majMontantPaye(_resteDu);})runLater
将任务排入FXApplicationRead队列。但当你有很多“事件”时,你只能看到最后的结果。(也可能是之前的短时间内)。如果你真的想看到两者之间的结果,我现在不能给你一个解决方案,因为在Swingutilities中没有类似的
runAndWait
,所以实际上你在JavaFX应用程序线程上执行它。这就是你的评论所显示的。对于硬币检测,你运行一个无限线程?请描述一点逻辑,以便我们能够提供帮助。我的意思是,你通常是如何使用线程的。记住不要在JavaFX线程上不运行UI。该方法是如何调用的?也许在应用程序线程上?此外,
Messages.getMessage(“0052”)
是一个长期运行的操作吗?是否有同步的块/方法可以阻止此操作,直到某些长时间运行的代码在不同的线程上执行?我的函数在不同的线程中执行。我有一个
if(Platform.isFxApplicationThread()){MainApp.getInstance.maincontrollergetlistachatcontroller.majMontantPaye(_resteDu);}else{Platform.runLater(()->MainApp.getInstance.maincontrollergetlistachatcontroller.majMontantPaye(_resteDu);})runLater
将任务排入FXApplicationRead队列。但当你有很多“事件”时,你只能看到最后的结果。(也可能是之前的短时间内)。如果你真的想看到两者之间的结果,我现在不能给你一个解决方案,因为在Swingutilities中没有类似的
runAndWait
,所以实际上你在JavaFX应用程序线程上执行它。这就是你的评论所显示的。对于硬币检测,你运行一个无限线程?请描述一点逻辑,以便我们能够提供帮助。我的意思是你通常如何使用线程。记住不要在JavaFX线程上运行任何UI。