[英]Exception in thread “JavaFX Application Thread” java.lang.NoClassDefFoundError: javafx/scene/control/ButtonBar
[英]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.