JavaFX 응용 프로그램을 만들고 4 개의 루트 컨트롤러가 있습니다. 이들 각각은 탭에서보기를 제어합니다. 표시 할 네 개의보기 중 하나를 선택하는 것 외에 다른 기능이 없으므로 탭 선택기의 컨트롤러가 없습니다. 이 컨트롤러는 동일한 데이터에 액세스해야하며이 데이터를 모두 수정할 수 있습니다.의존성 삽입 또는 관찰자 이외의 Java에서의 싱글 톤 패턴 대체
읽을 수있는 방식으로이 작업을 수행하는 유일한 방법은 네 개의 모든 컨트롤러에서 액세스하고 수정할 수있는 상태를 저장하는 정적 싱글 톤을 사용하는 것입니다. 명백한 이유 때문에 이것은 이상적이지 않습니다.
앱이 시작될 때 모든 컨트롤러가 초기화되므로 종속성 삽입을 사용할 수 없습니다. 서로에 의해 만들어지지 않습니다. 같은 이유로 나는 관찰자를 사용할 수 없다. 그들은 서로에 대한 참조를 얻을 수있는 방법이 없으므로 서로를 관찰 할 수 없습니다. 지금까지 내가 아는 한 Java의 브로드 캐스트 알림 시스템은 해결책이 될 수 있으므로 귀찮습니다. 제가 사용할 수있는 또 다른 패턴이 있습니까? 아니면 이러한 패턴 작업 중 하나를 만들 수있는 방법이 있습니까?
탭의 fxml 파일은 탭 창에 내용으로로드됩니다. 이렇게하면 각 탭마다 다른 컨트롤러를 가질 수 있습니다. 그런 다음 start 메소드는 탭 창 fxml을로드합니다.
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Data & Statistics">
<content>
<fx:include fx:id="dataViewTabControl" source="DataViewTabControl.fxml" />
</content>
</Tab>
. . .
[전달 매개 변수 JavaFX FXML] (http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml)의 가능한 복제본 – fabian
이들은 FXML 방식의 컨트롤러입니까? 네 개의 탭에 대한 네 개의 FXML 파일은 어디에로드됩니까? –
이들은 다음과 같이 탭의 내용으로 탭 창에로드됩니다. – Matt