Один из подходов состоит в том, чтобы инкапсулировать каждую из ваших страниц вкладок в отдельный файл FXML со своим собственным классом контроллера.
Затем в файле FXML для главного управления вкладки вы можете сделать что-то вроде этого:
<TabPane >
<tabs>
<Tab text="Untitled Tab 1">
<content>
<fx:include fx:id="fooTabPage" source="fooTabPage.fxml"/>
</content>
</Tab>
<Tab text="Untitled Tab 2">
<content>
<fx:include fx:id="barTabPage" source="barTabPage.fxml"/>
</content>
</Tab>
</tabs>
</TabPane>
Обратите внимание, что вместо того, чтобы встроить контент напрямую, я использую fx:include
директиву, которая говорит о FXMLLoader
для загрузки FXML-файл, на который ссылаются. Отдельные файлы FXML, используемые для содержимого страницы, будут иметь свой собственный контроллер, чтобы логика была приятно разделена.
Если вам нужно взаимодействовать с подстраницами или субконтроллерами от основного контроллера, вы можете ссылаться на них, как и на любой другой элемент управления FXML, чтобы их вставляли.
public class MainController {
// Inject tab content.
@FXML private FooTabPage fooTabPage;
// Inject controller
@FXML private FooTabController fooTabPageController;
// Inject tab content.
@FXML private BarTabPage barTabPage;
// Inject controller
@FXML private BarTabController barTabPageController;
}
Если у вас есть большое количество страниц (каждая с большим количеством своих собственных элементов управления) другой подход, чтобы оставить каждую вкладку пустыми, и после загрузки основного вида, загрузите соответствующую страницу в свой контроль ,
Вам нужно будет прослушать изменения вкладок, чтобы переключать контент и добавлять соответствующий код для загрузки/выгрузки видов, которые используются для содержимого страниц вкладок.
Я бы рекомендовал начать с первого подхода и рефакторинга, чтобы использовать второй подход, если обнаружите проблемы с производительностью.
Благодарим вас за быстрый ответ. Я поработаю с вашим решением. – roneypc
Нет проблем. Ознакомьтесь с [ссылкой FXML] (http://docs.oracle.com/javafx/2/api/javafx/fxml/doc-files/introduction_to_fxml.html), если вам нужна дополнительная информация. –
выберите это как ответ. Я думаю, что это очень хорошо объяснено и заслуживает внимания. – Ward