2016-11-07 65 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

相關問題