JavaFX TabPane:如何设置选定的标签页

60

我有一个使用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);
5个回答

118

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
如果您尝试选择不存在的选项卡,则不会发生任何事情。

36

为了简化上述方法:

myTabPane.getSelectionModel().select(myTab);

它确实很有帮助。 - ucMedia

1
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

1

继续Menai的回答,以下是如何重新聚焦打开的标签/TabPane。

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

-1

如果你使用的是静态标签页,也就是TabPane中的标签数量是静态的,你可以通过以下方式选择你的标签:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接