【问题标题】:JavaFX - Removing a Tab from a TabPane does not trigger the setOnClosed() callbackJavaFX - 从 TabPane 中删除选项卡不会触发 setOnClosed() 回调
【发布时间】:2018-07-31 17:46:23
【问题描述】:

我想在 JavaFX 选项卡的 setOnClosed 回调中执行代码。 但是,当我从 TabPane 中删除选项卡时:

TabPane rootTabPane;
rootTabPane.getTabs().remove(tab1);

在标签的控制器中,回调永远不会执行:

tab1.setOnClosed(event -> timerStop());

当通过鼠标单击关闭选项卡时,会运行回调,但在代码中删除选项卡时不会运行回调。

如何关闭代码中的选项卡以便调用回调?我有许多行为非常不同的选项卡,并且想要一个通用方法。

谢谢!

【问题讨论】:

    标签: javafx javafx-8


    【解决方案1】:

    TAB_CLOSED 事件仅在标签页因用户交互而关闭时触发。以编程方式删除 Tab 不会触发此事件,但没有什么可以阻止您自己触发它:

    public static void removeTabWithEvent(Tab tab) {
        tab.getTabPane().getTabs().remove(tab);
        Event closedEvent = new Event(tab, tab, Tab.CLOSED_EVENT);
        Event.fireEvent(tab, closedEvent);
    }
    

    【讨论】:

    • tab.getTabPane().getTabs().remove(tab); 我猜这是个错误,应该是rootTabPane.getTabPane().getTabs().remove(tab);
    • @Sedrick 否:Tab 允许您检索它所显示的 TabPane,此方法只是从显示它的 TabPane 中删除选项卡。当然,您可以将 TabPane 作为单独的参数传递,但这不是必需的,如果您使用多个 TabPanes... 顺便说一句:rootTabPane 是 @987654332 @ 并且不包含 getTabPane 方法。
    • 我忽略了getTabPane()
    • 谢谢@fabian!这正是我所希望的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2013-01-02
    • 2014-07-16
    • 1970-01-01
    • 2016-09-14
    • 2011-10-17
    • 2020-03-03
    相关资源
    最近更新 更多