57

我有一个带有 JavaFX 2 的 Java 桌面应用程序,在我的 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

5 回答 5

112

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

如果您尝试选择一个不存在的选项卡,则不会发生任何事情。

于 2011-08-02T17:49:43.743 回答
33

为了简化上述方法:

myTabPane.getSelectionModel().select(myTab);
于 2013-07-22T16:52:31.840 回答
1

要继续 Menai 的回答,请参阅如何重新调整打开的选项卡/TabPane 的焦点。

SingleSelectionModel<Tab> selectionModel = TabPane.getSelectionModel();
if(!Tabpane.getTabs().contains(tabName)) {
   TabPane.getTabs().add(tabName);
   selectionModel.select(tabPane);
} else {
   selectionModel.select(tabPane); 
}
于 2018-03-12T01:48:18.750 回答
0
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
于 2021-11-14T09:56:39.920 回答
-1

如果您使用statique选项卡,我的意思是您的 TabPane 有 statique 数量的选项卡,您可以通过这种方式选择您的选项卡:

 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);
于 2017-08-14T00:54:28.630 回答