当计时器达到 0 时从窗格中删除元素?
Remove elements from pane when timer reaches 0?
我试图在计时器达到零时从窗格中删除元素,更具体地说是标签和文本区域。但是,当计时器达到 0 并且我调用此方法时,出现此异常。
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
代码:
ActionListener timeListener = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
gameTime--;
System.out.println(gameTime);
if(gameTime == 0){
endGame();
}
}
};
endGame() 方法:
public void endGame(){
timer.stop();
System.out.println("Score: " + score);
view.gamePane.getChildren().removeAll(view.lblQuestion, view.tfAnswer);
}
您正在使用 AWT 动作事件。您想要从 JavaFX 窗格中删除一个项目。
他们 运行 在不同的线程中。
当您想从 AWT 线程访问 JavaFX 时,请使用:
Platform.runLater(new Runnable() {
@Override
public void run() {
//Your Access to Java FX
}
});
但也许您可以使用 JavaFX 事件而不是 JavaAWT 事件。
我试图在计时器达到零时从窗格中删除元素,更具体地说是标签和文本区域。但是,当计时器达到 0 并且我调用此方法时,出现此异常。
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
代码:
ActionListener timeListener = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
gameTime--;
System.out.println(gameTime);
if(gameTime == 0){
endGame();
}
}
};
endGame() 方法:
public void endGame(){
timer.stop();
System.out.println("Score: " + score);
view.gamePane.getChildren().removeAll(view.lblQuestion, view.tfAnswer);
}
您正在使用 AWT 动作事件。您想要从 JavaFX 窗格中删除一个项目。 他们 运行 在不同的线程中。
当您想从 AWT 线程访问 JavaFX 时,请使用:
Platform.runLater(new Runnable() {
@Override
public void run() {
//Your Access to Java FX
}
});
但也许您可以使用 JavaFX 事件而不是 JavaAWT 事件。