2017-12-27 19 views
0

필자는 데이터 레코드를 작성하는 양식을 나타내는 FXML을 가지고 있습니다. CreateRecordController에 대해서만이 FXML을 사용하면 컨트롤러를 FXML에 직접 바인딩하고 fx:id을 사용하여 컨트롤을이 컨트롤러에 바인딩 할 수 있습니다.JavaFX 8 : FXML 재사용

그러나이 FXML을 EditRecordController에도 다시 사용하려면 어떻게해야합니까? FXML에서 두 개의 컨트롤러를 바인딩 할 수 없습니다. FXML 로더에서이 바인딩을 수행하는 방법이 있습니까 ??

답변

2

fxml을로드하기 전에 FXMLLoader에 컨트롤러 인스턴스를 전달할 수 있습니다. 이것은 fxml 파일에서 결석하는 fx:controller 속성이 필요합니다

Object controller = ... // create an instance of the desired controller class here 

FXMLLoader loader = new FXMLLoader(getClass().getResource("/some/path/myfxml.fxml")); 
loader.setController(controller); 

Node root = loader.load(); 

참고 : 모든 자바 FX 속성에 컨트롤러를 할당하지 않기 때문에 바인딩이 여기에 잘못된 용어입니다.