ApplicationLớp của tôi trông như thế này:
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);
}
}
Hàm FXMLLoadertạo một phiên bản của bộ điều khiển tương ứng (được cung cấp trong FXMLtệp qua fx:controller) bằng cách gọi hàm tạo mặc định đầu tiên và sau đó là initializephương thức:
public class MainViewController {
public MainViewController() {
System.out.println("first");
}
@FXML
public void initialize() {
System.out.println("second");
}
}
Đầu ra là:
first
second
Vì vậy, tại sao initializephương pháp tồn tại? Sự khác biệt giữa việc sử dụng một hàm tạo hoặc initializephương thức để khởi tạo những thứ cần thiết của bộ điều khiển là gì?
Cảm ơn những đề xuất của bạn!
FXMLLoader, phải không? Vì vậy, tôi không thấy lợi ích khi chờ đợiinitialize()phương pháp -. Ngay sau khi FXML được tải, mã sau có quyền truy cập vào các@FXMLbiến. Chắc chắn, anh ta làm điều đó trong phương thức bắt đầu chứ không phải trong hàm tạo, nhưng sẽinitialize()mang lại bất kỳ lợi ích nào trong trường hợp của anh ta?