Application
Lớ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 FXMLLoader
tạo một phiên bản của bộ điều khiển tương ứng (được cung cấp trong FXML
tệp qua fx:controller
) bằng cách gọi hàm tạo mặc định đầu tiên và sau đó là initialize
phươ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 initialize
phươ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 initialize
phươ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@FXML
biế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?