我在我的项目中使用 ZK Framework 我在div或Window组件中有很多其他组件,任何人都可以告诉我如何禁用Div
或{{1在某些条件下组件。我检查过这些组件没有任何Window
属性。
我们可以disable
disable
或Div
的任何其他方式,否则我必须禁用Window
或Div
或{{1}内的每个组件}}
答案 0 :(得分:2)
我认为没有简单的方法,我会尝试这样的东西(在google上发现这个,但我记得在我上一个项目中做了类似的事情)
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 );
}
}
}
答案 1 :(得分:2)
这是一种非常简单的方法来禁用所有实现的组件
Disable
界面。
@Wire("disable")
private List<Disable> allToDisable;
private disableAll(List<Disable> list){
for(Disable d : list){
d.setDisabled(true);
}
}
您可以修改@Wire
的路径以满足您的需求,
使用Selectors
或任何其他方法的方法
采用zk选择器路径。让它以结尾
"disable"
,所以它应该选择每个组件
实现接口。
答案 2 :(得分:1)
我们可以改进Gatekeeper(5月16日和9月22日13:22)解决方案添加条件&#34; if&#34;。 if(ac instanceof Disable){--- code - }
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 );
}
}
}