JavaFX TabPane: How to set the selected tab

JavaTabsSelecteditemJavafx 2

Java Problem Overview


I have a Java Desktop Application with JavaFX 2 in it and in my FX I've got a TabPane. I want to set the default tab. In other words I want to set a tab as selected. I found that there are multiple ways to find out which tab is selected and I found setSelectionModel() but I can't figure out how to use it.

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

Java Solutions


Solution 1 - Java

The SelectionModelis the right approach. You can get the default from your TabPane or assign your own implementation by using setSelectionModel(...). The default model should be good enough for the beginning.

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

Once you stored it in some local variable, you have different options to select a tab.

selectionModel.select(tab); //select by object
selectionModel.select(1); //select by index starting with 0
selectionModel.clearSelection(); //clear your selection

If you try to select a non existing tab, nothing will happen.

Solution 2 - Java

To simplify the above mentioned approach:

myTabPane.getSelectionModel().select(myTab);

Solution 3 - Java

To continue with Menai's answer heres how to refocus the opened tab/TabPane.

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

Solution 4 - Java

TabPane tabPane = new TabPane();

tabPane.getSelectionModel().select(); //Select Tab
tabPane.getSelectionModel().select(); //Select tab index
tabPane.getSelectionModel().selectLast();
tabPane.getSelectionModel().selectFirst();
tabPane.getSelectionModel().selectNext();
tabPane.getSelectionModel().selectPrevious();
tabPane.getSelectionModel().clearSelection(); //Select Tab
tabPane.getSelectionModel().clearSelection(); //Select tab index

Solution 5 - Java

If you work with statique tabs ,i mean your TabPane has statique number of tabs ,you can select your tab by this way :

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

        selectionModel.select(tabName);

If you work with dynamique tabs ,i mean your TabPane has dynamique number of tabs (add and remove tabs) ,you can select your tab by this way :

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

        TabPane.getTabs().add(tabName);

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

    selectionModel.select(tabPane);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDorothyView Question on Stackoverflow
Solution 1 - JavapmouleView Answer on Stackoverflow
Solution 2 - JavaZonView Answer on Stackoverflow
Solution 3 - JavaKervin Rey BalibagosoView Answer on Stackoverflow
Solution 4 - JavaRoman ShubenkoView Answer on Stackoverflow
Solution 5 - JavaMenai Ala Eddine - AladdinView Answer on Stackoverflow