JavaFX FXML控制器 - 构造函数 vs 初始化方法
JavaFX FXML控制器 - 构造函数 vs 初始化方法
我的Application
类如下所示:
public class Test extends Application { private static Logger logger = LogManager.getRootLogger(); @Override public void start(Stage primaryStage) throws Exception { String resourcePath = "/resources/fxml/MainView.fxml"; URL location = getClass().getResource(resourcePath); FXMLLoader fxmlLoader = new FXMLLoader(location); Scene scene = new Scene(fxmlLoader.load(), 500, 500); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
FXMLLoader
通过首先调用默认构造函数,然后调用initialize
方法来创建对应控制器的实例(在FXML
文件中通过fx:controller
指定):
public class MainViewController { public MainViewController() { System.out.println("first"); } @FXML public void initialize() { System.out.println("second"); } }
输出结果为:
first second
那么,为什么会存在initialize
方法?使用构造函数和initialize
方法来初始化控制器有什么区别?
感谢您的建议!