2017-11-16 18 views
4

나는 잠시 동안 검색을 해왔고, 내가하고 싶은 것을 얻을 수 없었다. 나는이 스레드에서 'Loading new fxml in the same scene'의 javafx에서 fxml을 전환하기 위해 javafx 프레임 워크를 사용하고 있습니다. 제 말은, 저는 메인 윈도우가 있고,이 윈도우는 MAIN 영역과 CONTENT 영역이라는 두 개의 다른 영역을 가지고 있습니다.javafx에서 다중 fxml로드하기

MAIN 영역은 전체 응용 프로그램에서 동일하게 유지되지만 CONTENT 영역은 계속 변경됩니다. 내 MAIN 영역에는 툴바 만 있고 툴바의 어떤 버튼을 클릭 하느냐에 따라 CONTENT 영역의 fxml (및 동작)이 변경됩니다.

나는 그 행동을 이미 가지고 있으며 그 프레임 워크를 사용하여 매력처럼 작동합니다.

모든 콘텐츠 영역에 자체 MAIN 영역과 콘텐츠 영역이있을 수 있기를 바랍니다. 두 번째 MAIN 영역에서 수행하는 작업에 따라 fxml과 두 번째 CONTENT 영역의 동작도 변경됩니다.

내가 사용하고있는 프레임 워크가 충분한 지, 내가 사용하고 싶은 것을 얻을 수 있는지 알 수 없습니다.

그 기능을 사용하는 데 도움이 될 수있는 또 다른 프레임 워크를 알고 있습니까?

미리 감사드립니다.

+0

여기에 묻는 것은 분명하지 않습니다. 이 시나리오에서 이미 효과가있는 접근 방법을 사용해 보셨습니까? 그렇다면 제대로 작동합니까? 그렇지 않으면 무엇이 잘못됩니까? –

+0

프레임 워크는 모든 속성과 메소드를 정적으로 가지고 있기 때문에 작동하지 않습니다. 또한 JavaFX 응용 프로그램 클래스에서 초기화해야하며 fxml을 스왑하고 새 자식 fxml을 가져올 때 JavaFX 응용 프로그램 자체가 아니므로 거기에서 새 프레임 워크 인스턴스를 초기화 할 수 없습니다. 그리고 이전 프레임 워크 인스턴스를 재정의 할 수 있기 때문에 원래 프레임 워크 인스턴스를 사용할 수 없습니다. 나는 그것을 명확히하려고 노력할 수있는 한 빨리 나의 질문을 편집하려고 노력할 것이다. – JFValdes

답변

3

로드 할 모든 .fxml에는 자체 컨트롤러가있을 수 있습니다. 모든 컨트롤러에는 기본 액션처럼 사용자 정의 액션과로드 코드가있을 수 있습니다.

기본적으로 JavaFX는 모듈 식입니다. 메인 창에서 뭔가가 가능하다면 모든 아이들에게도 가능합니다.

일반적으로 UI 기반 프레임 워크에서는 각 구성 요소의 계층 구조를 반영하는 컨트롤러 계층 구조를 유지하는 것이 좋습니다. 자식 컨트롤러에 대한 자식 컨트롤러를 가져 오려면 (예를 들어 상위 컨트롤러에 대한 참조를 전달하기 위해) FXML.load() 바로 가기에 의존 할 수 없으므로 더 긴 구문을 사용해야합니다.

FXMLLoader loader = new FXMLLoader(getClass().getResource("your.fxml")); 
YourPaneType pane = loader.load(); 
YourControllerType controller = loader.getController();