JavaFX时间轴 - 如何从课堂上的其他地方停止它?

时间:2014-08-14 12:08:49

标签: javafx controls timeline

首先发布在这里,所以请温柔......

我是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。

我知道这是超级基本的,但我有点卡住..

干杯 克里斯平

0 个答案:

没有答案