簡體   English   中英

javafx場景上的javafx線程異常

[英]javafx thread exception on javafx scene

與我的問題有關: 使用兩個不同的值-javafx綁定標簽 ,現在我可以將兩個值綁定到標簽並在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();

在我的職位范圍內,這工作正常,但是當我使用創建項目的構建時
mvn assembly:assembly -Dmaven.test.skip=true

並使用bat文件運行項目,一切正常,即使值正在更新但不在UI上,它也會給出如下異常:

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)

我的構建很好,是否需要為此創建其他類型的線程?

您的代碼有兩個問題:
1.無需每秒重新綁定。
2.綁定屬性會在執行更改的線程上收到更改通知,因此,如果answerConnector.getNoOfAnswers在另一個線程上更改,您將獲得非on-on-FX線程異常。

您可以更改事件處理程序,以便每秒設置文本( Timeline確保將在FX線程上調用該文本),或者確保在FX線程上執行了原始更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM