ZK确定停用事业部,窗口布局组件?(ZK Disbale Div,Window,Layout Com

2019-09-03 15:17发布

我使用ZK框架的项目中,我有足够的股利或窗口组件内的其他组件,任何一个可以告诉我如何可以禁用DivWindow在某些condition.As我检查部件没有任何disable这些属性组件。

我们可以我任何其他方式disable一个DivWindow ,否则我必须禁用内部各组件DivWindowLayout

Answer 1:

这里一个很简单的方法来禁用实现所有组件
Disable接口。

@Wire("disable")
private List<Disable> allToDisable;

private disableAll(List<Disable> list){
   for(Disable d : list){
       d.setDisabled(true);
   }
}

您可以编辑的路径@Wire满足您的需求,
使用的方法Selectors或任何其他方法
采用一个ZK选择路径。 只要让它与结束
"disable" ,所以应该选择各个组件
实现该接口。



Answer 2:

我想,有没有简单的方法,我会尝试这样的事情(发现这个对谷歌,但我记得在做类似的事情在我的最后一个项目)

public static void disableComponents( AbstractComponent pComponent ) {

  for( Object o : pComponent.getChildren() ) {

     AbstractComponent ac = ( AbstractComponent ) o;

     try {
        Method m = ac.getClass().getMethod( "setDisabled", Boolean.TYPE );
        m.invoke( ac, true );
     } catch( Exception e ) {
     }

     List children = ac.getChildren();
     if( children != null ) {
        disableComponents( ac );
     }
  }

}



Answer 3:

我们可以改善看门人(在9:22 5月16日'13)解决方案添加条件“如果”。 如果(AC的instanceof禁用){---代码 - }

public static void disableComponents( AbstractComponent pComponent ) {
    for( Object o : pComponent.getChildren() ) {
        AbstractComponent ac = ( AbstractComponent ) o;
        try {
            if (ac instanceof Disable) {
                Method m = ac.getClass().getMethod("setDisabled", Boolean.TYPE);
                m.invoke(ac, true);
            }
        } catch( Exception e ) {
            e.printStackTrace();
        }

        List children = ac.getChildren();
        if( children != null ) {
            disableComponents( ac );
        }
    }
}


文章来源: ZK Disbale Div,Window,Layout Component?
标签: zk