2016-11-07 64 views

回答

0

通常你把FXML文件的内容到一个阶段(通过场景)内外兼修的FXML和控制器。所以你应该在你实际访问舞台的地方添加代码来做到这一点。您可以在控制器类中定义的方法来调用的时候,你需要做的“清理”:

public class Controller { 

    // injected fields, etc... 

    public void initialize() { 
     // initialization code... 
    } 

    // event handlers, etc... 

    public void shutdown() { 
     // cleanup code here... 
    } 
} 

现在,当你加载FXML并显示其在一个窗口中的内容,你可以注册阶段的处理程序调用控制器的关机方法:

Stage stage = ... ; 

FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/fxml/file")); 
Parent root = loader.load(); 
Scene scene = new Scene(root); 
stage.setScene(scene); 

// cleanup controller resources when window closes: 
Controller controller = loader.getController(); 
stage.setOnHidden(e -> controller.shutdown()); 

stage.show(); 
+0

非常感谢您,这样做的窍门。我还添加了一些代码来调用主控制器中包含的嵌套控制器的“关闭”方法。 – YellowSub

相关问题