执行控制器类的操作AFTER fxml文件已加载到舞台上

时间:2015-02-26 20:18:35

标签: javafx fxml scene

我有一个按钮,当按下该按钮时,应该从fxml文件中打开一个新场景:

@FXML
private void button(ActionEvent event) throws IOException {

    navigation.getChildren().clear();
    AnchorPane newPane = FXMLLoader.load(getClass().getResource("Controller.fxml"));
    this.navigation.getChildren().setAll(newPane);

}

但是发生的事情是fxml文件控制器中的代码首先在实际打开场景之前执行。

所以在控制器类中我有:

public void initialize(URL url, ResourceBundle rb) {

    try {             

        method1();

        Thread.sleep(2000);

        method2();

        Thread.sleep(2000);

        method3();

    } catch (InterruptedException ex) {
        Logger.getLogger(ScanningController.class.getName()).log(Level.SEVERE, null, ex);
    }


} 

public void method1(){

    System.out.println("method1");

    progressBar.setProgress(0.33);

}

public void method2(){

     System.out.println("method2");

    progressBar.setProgress(0.66);

}

public void method3(){

     System.out.println("method3");

    progressBar.setProgress(1);

}
方法1,方法2,方法3都被执行然后场景被打开但我希望这些方法在新场景打开时发生。

我不知道为什么会这样做。

任何建议将不胜感激。谢谢。

编辑:这只是一个例子,它不一定只是进度条,它发生在我的所有控制器类中。例如,我有一个类从Raspberry Pi向Arduino发送和接收字节,并且在代码实现后直接打开场景。

0 个答案:

没有答案