Javafx 选项卡创建事件处理程序

Javafx 选项卡创建事件处理程序,javafx,tabs,Javafx,Tabs,在我的代码中,MyTabextendesTab直到第8版存在方法setEventHandler(…) 因为我现在使用的是JavaFX12版本,所以这个方法是私有的,我不能再使用它了。 我也无权访问选项卡的变量eventHandlerManager 如何在JavaFX12中访问此功能 下面是一个代码示例 公共类MyTab扩展选项卡{ ... 受保护的ObjectProperty onEventDockRequest=null; public void setOnEventDockRequest(E

在我的代码中,
MyTab
extendes
Tab
直到第8版存在方法
setEventHandler(…)
因为我现在使用的是JavaFX12版本,所以这个方法是私有的,我不能再使用它了。 我也无权访问
选项卡的变量
eventHandlerManager
如何在JavaFX12中访问此功能

下面是一个代码示例

公共类MyTab扩展选项卡{
...
受保护的ObjectProperty onEventDockRequest=null;
public void setOnEventDockRequest(EventHandler值){
onEventDockRequestProperty().set(值);
}
public final ObjectProperty onEventDockRequestProperty(){
if(onEventDockRequest==null){
onEventDockRequest=newObjectPropertyBase(){
@覆盖受保护的无效(){
setEventHandler(EventAction.DOCK_请求,get());//此处出错
}
@重写公共对象getBean(){
返回DTab.this;
}
@重写公共字符串getName(){
返回“onEventDockRequest”;
}
};
}
返回一个ventdockrequest;
}
}

这将是
setOnAction()
方法。请原谅@Zephyr,我找不到类
javafx.scene.control.Tab的
setOnAction()
。我遗漏了什么?@tretonis,你有兴趣处理什么
Tab
事件吗?@Abra我相信他们想触发并处理定制事件。他们已将事件处理程序属性添加到其
选项卡
子类中,以便更轻松地处理此自定义事件(与
节点
及其子类的所有
onXXX
属性相同)。不幸的是,实现这一点所需的API似乎已经隐藏在最近的版本中;这与公开受保护的
setEventHandler
方法的
Node
不同。@Zephyr OP似乎正在尝试添加自定义属性以处理自定义事件。它将是
setOnAction()
方法。请原谅@Zephyr,但我找不到
setOnAction()方法
用于类
javafx.scene.control.Tab
。我遗漏了什么?@tretonis,你有兴趣处理什么
Tab
事件吗?@Abra我相信他们想触发并处理定制事件。他们已将事件处理程序属性添加到其
选项卡
子类中,以便更轻松地处理此自定义事件(与
节点
及其子类的所有
onXXX
属性相同)。不幸的是,实现这一点所需的API似乎已经隐藏在最近的版本中;这与
节点
不同,后者公开受保护的
setEventHandler
方法。@Zephyr OP似乎正在尝试添加自定义属性以处理自定义事件。
public class MyTab extends Tab {
  ...

  protected ObjectProperty<EventHandler<EventAction>> onEventDockRequest=null;

    public void setOnEventDockRequest(EventHandler<EventAction> value) {
        onEventDockRequestProperty().set(value);
    }

    public final ObjectProperty<EventHandler<EventAction>> onEventDockRequestProperty() {
        if (onEventDockRequest == null) {
            onEventDockRequest = new ObjectPropertyBase<EventHandler<EventAction>>() {

                @Override protected void invalidated() {
                    setEventHandler(EventAction.DOCK_REQUEST, get());  // here error                 
                }

                @Override public Object getBean() {
                    return DTab.this;
                }

                @Override public String getName() {
                    return "onEventDockRequest";
                }
            };
        }
        return onEventDockRequest;
    }

}