我有一个按钮,当按下该按钮时,应该从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发送和接收字节,并且在代码实现后直接打开场景。