gpt4 book ai didi

java - 错误!线程 "AWT-EventQueue-0"java.lang.IllegalStateException : Not on FX application thread; currentThread = AWT-EventQueue-0 中的异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:50 25 4
gpt4 key购买 nike

我不确定我做错了什么。

我创建了一个计时器,用于更新 GUI 顶部的文本图形。但是,当计时器用完时,它会更改一个变量(链接到一个监听器),并向我的 GUI 添加一个新的图形“场景/组/节点”。

-更改我的变量//链接到 ChangeListener- 并向我的 GUI 添加场景//不是监听器,但向我的 GUI 添加新元素

这两个添加都会导致我的程序因该错误而崩溃:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:235)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:393)

示例错误代码:

int delay = new Integer(1000); //milliseconds
time_left=time_limit;


ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
timer.setText(time_left+" SECONDS LEFT");


time_left=time_left-1;
if (time_left<0)
{
//time_left=time_limit;
mytimer.stop();
//mytimer.start();
root.getChildren().get(2).setOpacity(.2);
//root.getChildren().add(3,newScene()); //This causes to crash //Adds a new Scene to my GUI
current_player.setValue(false); //Also causes to crash - current_player has a Listener on it
//System.out.println("TIMER RAN OUT!");
}


}
};
mytimer=new Timer(delay, taskPerformer);
mytimer.start();

我的 current_player 监听器:

current_player.addListener(new ChangeListener<Boolean>() {

@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
//Code in Here
}
{);

最佳答案

异常信息不是很明显吗?您使用 Swing timer ,它在事件调度线程上调用它的监听器(使用 Swing 应用程序时需要)。

但是,您是在该线程上更新 JavaFX UI,而不是在 FX 应用程序线程上。

我(还)不熟悉 JavaFX,但希望他们也有这样的定时器机制,您可以使用,或者类似于 EventQueue.invokeAndWait 的东西,您可以在 actionPerformed 方法

编辑:

做了一些谷歌搜索并找到了 this page about concurrency in JavaFX这可能是一本好书。但是,没有提到计时器类。也许是 Animation类就是你要找的

关于java - 错误!线程 "AWT-EventQueue-0"java.lang.IllegalStateException : Not on FX application thread; currentThread = AWT-EventQueue-0 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com