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

时间:2014-08-06 13:31:59

标签: java events anchor zk

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

我有自定义组件Btn extends A wich在构造函数中将A作为参数

我需要:

  • 将所有EventListeners从A设置为Btn
  • 在没有反射的情况下进行,没有创建新的List,只有46个String项目才能执行此操作

主要问题:

  • 事件类不是Enum,因此我无法迭代所有46个事件名称
  • AbstractComponent(A的父级)无法获取EventListeners的迭代Map
    • 它只向我提供无法使用的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;
    }
    

0 个答案:

没有答案