2014-09-13 18 views
8

Tôi có đoạn mã sau:JavaFX - Cách nhận Bộ điều khiển FXML?

Parent parent = FXMLLoader.load(Main.class.getResource("JanelaPrincipal.fxml")); 

trong file fxml có một tham chiếu đến lớp điều khiển. Làm thế nào tôi có thể nhận được đối tượng điều khiển?


fxml:

<AnchorPane id="AnchorPane" fx:id="root" 
    prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" 
    xmlns="http://javafx.com/javafx/2.2" 
    fx:controller="br.meuspila.javafx.JanelaPrincipalController"> 
    ... 

Trả lời

26

Khởi tạo một FXMLLoader và sử dụng một phương pháp dụ tải chứ không phải là một lớp phương pháp tải trọng tĩnh. Sau đó bạn có thể truy xuất cá thể bộ điều khiển từ thể hiện trình nạp.

FXMLLoader loader = new FXMLLoader(
    getClass().getResource(
    "customerDialog.fxml" 
) 
); 

Pane pane = (Pane) loader.load(); 

CustomerDialogController controller = 
    loader.<CustomerDialogController>getController(); 
controller.initData(customer); 

Để biết thêm thông xem:

+1

Đây là chính xác những gì tôi cần. Cảm ơn! – ceklock

+1

Điều đó thực sự hữu ích. Cảm ơn –

+0

yup, đây là một câu trả lời rất hữu ích! Ngoài ra hãy chắc chắn rằng khi bạn đang tạo một thể hiện của lớp FXMLLoader, bạn làm điều đó như được hiển thị trong câu trả lời này (bằng cách chỉ định tệp .fxml). Tôi đã làm nó như là chỉ mới FXMLLoader(); và đó là đưa cho tôi một ngoại lệ con trỏ Null sau này khi tôi đã cố gắng truy cập vào bộ điều khiển cho tệp mẫu fxml. – user2407334

Các vấn đề liên quan