可能是因为您误解了
Platform.runLater()工作原理。
正确的代码段为:
public void moveCircle(Circle circle, Scene scene) { Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { Platform.runLater(() -> { circle.setCenterX(random((int) scene.getX())); circle.setCenterY(random((int) scene.getY())); }); } }, 1000, 1000);}但:
我强烈建议您不要使用
Timer,
TimeLine而是使用!它是JavaFX
API的一部分,您不必执行这些
Platform.runLater()调用。这只是很快就被黑了,但是您知道了:
public void moveCircle(Circle circle, Scene scene) { Timeline timeline = new Timeline(new Keyframe(Duration.seconds(1), ev -> { circle.setCenterX(random((int) scene.getX())); circle.setCenterY(random((int) scene.getY())); })); timeline.setCycleCount(Animation.INDEFINITE); timeline.play();}


