首先发布在这里,所以请温柔......
我是JavaFX的新手,并成功设置了一个非常复杂的GUI,它读取一个csv文件,以便在GUI中填充某些组件。
我在GUI控制器的intialize函数中使用了一个时间轴,它在GUI上每秒触发一个按钮 - 该按钮调用一个函数来读取csv文件格式的光盘..这一切都正常。< / p>
当我退出/退出GUI阶段时,我想停止运行时间线......但似乎无法管理这个......
我有一个加载舞台的小功能,还有一个事件监听器来检测它什么时候关闭...我想做的是能够关闭评论行的时间线...在try / catch部分。
public void Show_MACD() throws IOException
{
Parent root = FXMLLoader.load(getClass().getResource("MACD Turbo.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle("FX AlgoTrader MACD Turbo");
stage.show();
JavaFX.thisstage=stage;
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent we) {
LoginController sp=new LoginController();
try {
//how can I stop the timeline here?
sp.Show_Products(); // this loads up another stage - a menu in fact
} catch (IOException ex) {
Logger.getLogger(MACD_Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
//System.out.println("running");
}
这里是初始化函数中设置和运行时间轴的部分....(这与控制器在同一个类中称为&#39; MACD_Controller&#39;它也是主页到具有窗口关闭事件的事件监听器的&#39; Show_MACD&#39;函数..这是我想要停止时间线的那种,即窗口关闭的时候)
@Override
public void initialize(URL url, ResourceBundle rb) {
final Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent)
{
Refresh.fire(); //Refresh is a button on the GUI which calls the csv file
}
}));
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();
}
我知道我需要以某种方式创建对时间线&#39;的引用。这样我就可以使用&#39; timeline.stop&#39;功能......我尝试过各种各样的傻瓜,但我一直在接受NPE。
我知道这是超级基本的,但我有点卡住..
干杯 克里斯平