问题
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);
回答1:
The SelectionModel
is 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.
回答2:
To simplify the above mentioned approach:
myTabPane.getSelectionModel().select(myTab);
回答3:
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);
}
回答4:
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);
来源:https://stackoverflow.com/questions/6902377/javafx-tabpane-how-to-set-the-selected-tab