当计时器达到0时从窗格中删除元素?

时间:2015-01-27 16:58:33

标签: java timer actionlistener pane

我试图在计时器到达零时从窗格中删除元素,更具体地说是标签和文本区域。但是,当计时器达到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);
}

1 个答案:

答案 0 :(得分:1)

您正在使用AWT动作事件。您想要从JavaFX-Pane中删除一个Item。 它们运行在不同的线程中。

如果要从AWT线程访问JavaFX,请使用:

Platform.runLater(new Runnable() {

    @Override
    public void run() {
        //Your Access to Java FX
    }
});

但也许您可以使用JavaFX事件而不是JavaAWT事件。