JavaFX TabPane: How to set the selected tab

2019-03-11 14:21发布

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

4条回答
迷人小祖宗
2楼-- · 2019-03-11 14:45

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.

查看更多
趁早两清
3楼-- · 2019-03-11 14:58

To simplify the above mentioned approach:

myTabPane.getSelectionModel().select(myTab);
查看更多
兄弟一词,经得起流年.
4楼-- · 2019-03-11 15:08

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);
查看更多
疯言疯语
5楼-- · 2019-03-11 15:12

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); 
}
查看更多
登录 后发表回答