Java 如何从org.zkoss.zul.A复制所有EventListener

Java 如何从org.zkoss.zul.A复制所有EventListener,java,events,anchor,zk,Java,Events,Anchor,Zk,我很困惑,因为我找不到任何方法将EventListeners从一个锚复制到另一个锚 我有一个自定义组件Btn扩展了一个,它在构造函数中以A作为参数 我需要: 将所有EventListeners从A设置为Btn 无需反射,无需创建包含46个字符串项的新列表即可完成此操作 主要问题: Events类不是枚举,因此我无法迭代所有46个事件名称 AbstractComponent(A的父级)无法获取EventListeners的可移植映射 它只向我提供不可设置的EventListenerMap对

我很困惑,因为我找不到任何方法将EventListeners从一个锚复制到另一个锚

我有一个自定义组件Btn扩展了一个,它在构造函数中以A作为参数

我需要:

  • 将所有EventListeners从A设置为Btn
  • 无需反射,无需创建包含46个字符串项的新列表即可完成此操作
主要问题:

  • Events类不是枚举,因此我无法迭代所有46个事件名称
  • AbstractComponent(A的父级)无法获取EventListeners的可移植映射
    • 它只向我提供不可设置的EventListenerMap对象
  • 我尝试了反射,但无法实现“onClick”,只能从声明的字段中实现“ON_CLICK”

    public Btn(A anchor) {
        this(anchor.getLabel());
        this.setHref(anchor.getHref());
        for (String evt : getEventNames()) {
            for (EventListener listener : anchor.getEventListeners(evt)) {
                this.addEventListener(evt, listener);
            }
        }
    }
    
    
    public final Set<String> getEventNames() {
    
        Set<String> set = new HashSet<String>();
    
        set.add(Events.ON_AFTER_SIZE);
        set.add(Events.ON_BLUR);
        ...
        ...
        set.add(Events.ON_VISIBILITY_CHANGE);
        set.add(Events.ON_Z_INDEX);
    
        return set;
    }
    
    公共Btn(一个锚){
    这个(anchor.getLabel());
    this.setHref(anchor.getHref());
    for(字符串evt:getEventNames()){
    for(EventListener:anchor.getEventListeners(evt)){
    this.addEventListener(evt,listener);
    }
    }
    }
    公共最终集getEventNames(){
    Set=newhashset();
    set.add(事件大小之后的事件);
    set.add(事件在_BLUR上);
    ...
    ...
    set.add(事件的可见性变化);
    set.add(事件在Z_索引上);
    返回集;
    }
    

Btn这是一个自定义组件?是的,这是一个基于AI的自定义组件。我不知道这是否是您的情况,但如果您还没有准备好,请看一看,似乎我需要更具体地重新表述我的问题。我已经有自定义组件,我只需要将EventListeners从A复制到我的Btn(扩展A)