JavaFX TabPane: как установить выбранную вкладку
У меня есть настольное приложение Java с JavaFX 2 в нем, и в моем FX у меня есть TabPane. Я хочу установить вкладку по умолчанию. Другими словами, Я хочу установить вкладку как выбранную. Я обнаружил, что есть несколько способов узнать, какая вкладка выбрана, и я нашел setSelectionModel()
но я не могу понять, как его использовать.
TabPane tabPane = new TabPane();
Tab tab0 = new Tab("blue");
tab.setContent(new Rectangle(200,200, Color.BLUE));
Tab tab1 = new Tab("green");
tab.setContent(new Rectangle(200,200, Color.GREEN));
tabPane.getTabs().addAll(tab0, tab1);
4 ответов
на SelectionModel
- это правильный подход. Вы можете получить значение по умолчанию от вашего TabPane
или назначить свою собственную реализацию, используя setSelectionModel(...)
. Модель по умолчанию должна быть достаточно хороша для начала.
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
после того, как вы сохранили его в некоторой локальной переменной, у вас есть разные варианты выбора вкладки.
selectionModel.select(tab); //select by object
selectionModel.select(1); //select by index starting with 0
selectionModel.clearSelection(); //clear your selection
если вы попытаетесь выбрать несуществующую вкладку, ничего не произойдет.
чтобы продолжить с ответом Меная heres, как перефокусировать открытую вкладку / TabPane.
SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();
if(!Tabpane.getTabs().contains(tabName)) {
TabPane.getTabs().add(tabName);
selectionModel.select(tabPane);
} else {
selectionModel.select(tabPane);
}
Если вы работаете с statique вкладки, я имею в виду ,что ваша TabPane имеет статическое количество вкладок, вы можете выбрать вкладку следующим образом :
SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();
selectionModel.select(tabName);
Если вы работаете с ГБО вкладки, я имею в виду ,что ваша TabPane имеет динамическое количество вкладок (добавление и удаление вкладок), вы можете выбрать вкладку следующим образом :
if (!TabPane.getTabs().contains(tabName)) {
TabPane.getTabs().add(tabName);
}
SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();
selectionModel.select(tabPane);