3

我是 JavaFX 的新手。我想Listener在用户关闭选项卡进入TabPane. 到目前为止,我设法动态创建选项卡并添加一些自定义配置。

    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

我不知道我需要使用什么事件监听器以及如何定义它。你能告诉我如何实现这个吗?

4

4 回答 4

8

您可以尝试对 Tab 类的 onCloseRequest

tab.setOnCloseRequest(new EventHandler<Event>()
{
    @Override
    public void handle(Event arg0) 
    {
        //your code
    }
});
于 2016-08-06T16:36:00.093 回答
0

试试这个代码:

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

有关详细信息,请参阅http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#onClosedProperty

于 2013-06-28T23:00:32.060 回答
0

我已经将您在 jdk8 支持中的类似支持破解到 2.2 中(https://git.eclipse.org/c/efxclipse/org.eclipse.efxclipse.git/tree/bundles/runtime/org.eclipse.fx.e4 .controls.fx2/src/org/eclipse/fx/e4/controls/fx2 )

于 2013-06-29T12:53:40.190 回答
0

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

stage.fireEvent(
            new WindowEvent(
                    stage,
                    WindowEvent.WINDOW_CLOSE_REQUEST
            )
);

虽然这种方法的问题是当您单击“X”关闭窗口时也会触发事件。这不应该是正常的目的。

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

于 2017-08-04T15:23:22.037 回答