【发布时间】:2018-03-01 13:47:34
【问题描述】:
JavaFX 的Tab 类提供了一个setOnClosed 方法来添加一个事件处理程序,该处理程序在选项卡关闭时执行。
当我只想添加一个事件处理程序时,这很有效。
我还没有实现的是添加多个事件处理程序,因为第二次调用 setOnClosed 会“覆盖”第一次调用时设置的事件处理程序。
在下面的代码示例中,只有doSomethingIsExecuted 在标签关闭时执行,但我希望所有三个事件处理程序都被执行。
Tab tab = new Tab();
tab.setOnClosed(event -> doSomething());
tab.setOnClosed(event -> doSomethingElse());
tab.setOnClosed(event -> doSomethingIsExecuted());
附加信息:在我的情况下,不可能将三个事件处理程序合并为一个,我真的需要一个解决方案来添加多个事件处理程序。
【问题讨论】:
-
似乎没有任何 API 可以让您直接执行此操作。我认为唯一的选择是 1。如果您有权访问选项卡窗格,请使用其选项卡列表注册一个侦听器,以便在从列表中删除选项卡时做出响应。您可以通过这种方式注册多个侦听器。 2. 将处理程序设置为包装任何现有处理程序并调用它的处理程序,然后执行附加操作。这相当容易,但很难以这种方式删除任何处理程序。
标签: java javafx tabs event-handling eventhandler