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);

person Dorothy    schedule 01.08.2011    source источник


Ответы (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

Если вы попытаетесь выбрать несуществующую вкладку, ничего не произойдет.

person pmoule    schedule 02.08.2011

Чтобы упростить вышеупомянутый подход:

myTabPane.getSelectionModel().select(myTab);
person Zon    schedule 22.07.2013
comment
Это действительно помогает. - person ucMedia; 13.03.2019

Чтобы продолжить ответ Менаи, вот как переориентировать открытую вкладку/TabPane.

SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();
if(!Tabpane.getTabs().contains(tabName)) {
   TabPane.getTabs().add(tabName);
   selectionModel.select(tabPane);
} else {
   selectionModel.select(tabPane); 
}
person Kervin Rey Balibagoso    schedule 12.03.2018

Если вы работаете с вкладками statique, я имею в виду, что ваша TabPane имеет определенное количество вкладок, вы можете выбрать свою вкладку следующим образом:

 SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();

        selectionModel.select(tabName);

Если вы работаете с вкладками dynamique, я имею в виду, что ваша TabPane имеет динамическое количество вкладок (добавление и удаление вкладок), вы можете выбрать свою вкладку следующим образом:

        if (!TabPane.getTabs().contains(tabName)) {

        TabPane.getTabs().add(tabName);

    }
    SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();

    selectionModel.select(tabPane);
person Menai Ala Eddine - Aladdin    schedule 14.08.2017