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