Javafx 2 关闭选项卡时确认对话框窗口

Javafx 2 关闭选项卡时确认对话框窗口,javafx-2,javafx,javafx-8,Javafx 2,Javafx,Javafx 8,我是JavaFX新手。我想创建Listener,当用户关闭选项卡窗格中的选项卡时,它会调用问题对话框。到目前为止,我成功地动态创建了选项卡,并添加了一些自定义配置 tabAvLabel = new Label(ss); tabPane.getTabs().add(0, tab); // Place the new tab always first tabPane.getSelectionModel().select(tab); // Always show th

我是JavaFX新手。我想创建
Listener
,当用户关闭
选项卡窗格中的选项卡时,它会调用问题对话框。到目前为止,我成功地动态创建了选项卡,并添加了一些自定义配置

    tabAvLabel = new Label(ss);

    tabPane.getTabs().add(0, tab);  // Place the new tab always first
    tabPane.getSelectionModel().select(tab);    // Always show the new tab
    tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.ALL_TABS); // Add close button to all new tabs
我不知道我需要使用什么事件侦听器以及如何定义它。您能告诉我如何实现这一点吗?

试试下面的代码:

tabAvLabel = new Label(ss);

tabPane.getTabs().add(0, tab);  // Place the new tab always first
tabPane.getSelectionModel().select(tab);    // Always show the new tab
tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.ALL_TABS); // Add close button to all new tabs
tabPane.getOnClosed(), setOnClosed(new EventHandler<Event>(){
    @Override void handle(Event e){
        // What you have to do here
    }
})
tabAvLabel=新标签(ss);
tabPane.getTabs().add(0,tab);//始终首先放置新选项卡
tabPane.getSelectionModel()。选择(选项卡);//始终显示新选项卡
tabPane.setTabClosingPolicy(tabPane.TabClosingPolicy.ALL_TABS);//将关闭按钮添加到所有新选项卡
tabPane.getOnClosed(),setOnClosed(新的EventHandler()){
@覆盖无效句柄(事件e){
//你在这里要做什么
}
})

有关更多信息,请参见

我已将jdk8支持中类似的支持黑客攻击到2.2()

您可以尝试关闭Tab类的请求

tab.setOnCloseRequest(new EventHandler<Event>()
{
    @Override
    public void handle(Event arg0) 
    {
        //your code
    }
});
tab.setOnCloseRequest(新的EventHandler()
{
@凌驾
公共无效句柄(事件arg0)
{
//你的代码
}
});

关于@VagrantAI的答案是可行的。但您必须在“确定”按钮单击操作功能上添加以下代码:

stage.fireEvent(
            new WindowEvent(
                    stage,
                    WindowEvent.WINDOW_CLOSE_REQUEST
            )
);
这种方法的问题是,当您单击“X”关闭窗口时也会触发事件。这通常不是目的


要解决此问题,请在加载窗口的类中添加一个标志(或静态变量)。因此,每次加载窗口时,将标志设置为false。当窗口关闭时,仅在单击“确定”按钮时设置标志。然后,您可以执行有关此标志值的操作。

请查看相关和搜索结果。OP的可能副本需要TAB\u ON\u关闭事件,而不是TAB\u ON\u关闭事件。在JavaFX-8中确实存在<代码> OnCuffelQuest<<代码>事件,所以请在Oracle论坛上考虑这个答案: