识别JavaFX选项卡

默克哈尔迪

在我的JFX应用程序中,我创建了一个数组列表来跟踪选项卡。我主要是想知道用户关闭了哪些选项卡,以便我处理由于删除特定选项卡而发生的更改。

我试图使用下面的代码从数组列表中删除关闭的选项卡。我使用一种setOnClosed方法来触发此代码:(String id = closedTab.getId();此ID是在首次创建标签时分配的,因此它不为null。)

for (Tab aTab : allTabsList) {
    if (aTab.getId().equals(id)) {
        allTabsList.remove(aTab);
        break;
    }
} 

我在该getId方法上得到一个空指针异常不知道为什么。

因此,我尝试执行以下操作:

for (Tab aTab : allTabsList) {
    if (aTab.equals(closedTab)) {
        allTabsList.remove(closedTab);
        if allTabsList.contains(closedTab){
            System.out.println("tab is still there");
        }
    }
}

删除后,我检查了arrayList是否包含此选项卡,并且它的代码没有进入if语句,因此它不应该包含它。但是,数组列表的大小不会改变。

有任何想法吗?

默克哈尔迪

我实际上喜欢一种更好的方法。这里是:

设置是这样的:

  • 我创建了一个“ MyTab”类来包装JavafX Tab对象。我认为包装它可以使我轻松控制嵌入字段。javaFX Tab变量的名称如下:fxTab。

  • fxTab从单独的FXML文件获取其内容。在下面的代码中,内容/场景的根是“ sceneRoot”。这样,我可以创建多个fxTab(程序中部分功能)。

  • 然后,我为MyTab对象创建了一个ID变量,并将其通过fxTab.serUserData()传递给了fxTab;

  • 然后,我添加一个setOnClosed方法并使用ID来标识哪个fxTab已关闭,然后从arrayList(allMyTabs)中删除其包装。关闭fxTab时,我在我的arrayList中查找所有MyTab对象,并比较userData以确定我需要哪些对象。当然,ID变量总是递增的。因此,不会有具有相似ID的标签。

        sceneRoot = (AnchorPane) loader.load();//load the tab scene root from the FXML loader
        Tab fxTab = new Tab();
        fxTab.setContent(sceneRoot);//add the tab scene root node to the tab
        fxTab.setClosable(true);//make the tab closable
    
        fxTab.setId(ID.toString());//set its ID.
    
        //add a close action to the created tab stage
        fxTab.setOnClosed(new EventHandler<Event>() {
            @Override
            public void handle(Event t) {
                Tab fxTab = (Tab) t.getSource();//get the source of the action...
    
                for (MyTab myTabObj: allMyTabs) {
                    if (myTabObj.ID.equals(fxTab.getUserData())) {
                        fxTab = myTabObj;//f so, this is the one
                        break;//break the loop
                    }
    
                }
                allMyTabs.remove(myTabObj);
                System.out.println("You closed Tab: " + fxTab.getUserData());
                System.out.println("Total number of remaining tabs is:" + allMyTabs.size());
            }
        });
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改JavaFx选项卡的默认外观

来自分类Dev

JavaFX-选项卡中的FXML

来自分类Dev

更改JavaFx选项卡的默认外观

来自分类Dev

JavaFX Scene Builder定制选项卡

来自分类Dev

JavaFX 禁用选项卡导航

来自分类Dev

jQuery选项卡无法识别选项卡UI面板ID

来自分类Dev

jQuery选项卡无法识别选项卡ui面板ID

来自分类Dev

将按钮添加到选项卡和选项卡区域JavaFX

来自分类Dev

javafx的先前选项卡会影响最新的选项卡

来自分类Dev

IE Automation-识别活动选项卡

来自分类Dev

如何在 SelectedTabChangeListener 中识别选定的选项卡?

来自分类Dev

通过可编辑单元格的JavaFX选项卡

来自分类Dev

JavaFX ContextMenu加速器从错误的选项卡启动

来自分类Dev

JavaFx-SceneBuilder中的选项卡顺序

来自分类Dev

在tabpane javafx中创建垂直选项卡

来自分类Dev

如何使用FXML在JavaFX中动态创建选项卡?

来自分类Dev

JavaFX 8 TextArea松散地关注选项卡

来自分类Dev

Javafx TabPane具有多行选项卡

来自分类Dev

JavaFX,在选项卡控制器之间传递参数

来自分类Dev

在JavaFX上动态添加和填充选项卡

来自分类Dev

JavaFX选项卡窗格未显示

来自分类Dev

获取附加到javafx选项卡的对象

来自分类Dev

对 TabPanes 选项卡使用 JavaFX PopOver 以查看其内容

来自分类Dev

JavaFX选项卡式窗格,每个选项卡上都有表格视图?

来自分类Dev

如何将多个选项卡关闭事件处理程序添加到 JavaFX 选项卡?

来自分类Dev

JavaFX 8-选项卡和选项卡,每个选项卡具有单独的FXML和控制器

来自分类Dev

链接到jQuery选项卡的特定选项卡

来自分类Dev

AngularJS引导程序选项卡选项卡标题

来自分类Dev

jQuery选项卡和子选项卡

Related 相关文章

热门标签

归档