如何使用ZK getFellow()方法?

时间:2010-10-20 17:42:27

标签: java zk

我将zul文件中的一堆标签传递给java文件,如下所示:

tabs.zul

<tabs>
  <tab id="tab1" label="Tab1"> </tab>
  <tab id="tab2" label="Tab2"> </tab>
</tabs>
<zscript>
  testTabs = new TestTabs();
  Tab[] tabs = {tab1, tab2}
  testTabs.registerTabs(tabs)
</zscript>

TestTabs.java

public class TestTabs {
  ....
  private HashMap<String,Tab> tabMap;

    void registerTabs (Tab[] tabs) {
      this.tabMap = new HashMap<String,Tab>();
      for (Tab t: tabs) {
        this.tabMap.put(t.getId(),t);
      }
    }

   if(condition) {
     tabMap.get("tab1").setVisible(true);
     tabMap.get("tab2").setVisible(true);
   }  

}

现在,我想使用Hashmaps访问标签是一种迂回的方式。使用getFellow(String id)方法访问选项卡会简单得多,对吧?但是,我不确定如何实现这一点。有人可以帮我这个吗?

谢谢, 索尼

2 个答案:

答案 0 :(得分:1)

getFellow()方法可以在ZK的组件上使用。 用户可以通过它的ID

访问组件
myWindow.getFellow("label_1");

如果您在应用程序中使用ZK MVC方式。

您可以将**“作曲家”保存到桌面,然后就可以访问该页面的任何部分。

答案 1 :(得分:1)

有几种方法可以做到这一点:

  1. 在您的课程中扩展 org.zkoss.zul.Window 并将其链接到您的zul文件中,如下所示:
    <window id="myWindow" use="package.to.your.ClassThatExtendsWindow">
    <!-- your tabs go here -->
    </window>
    然后在课堂上,您可以使用Tab tab1 = (Tab) this.getFellow("tab1");
  2. 扩展 org.zkoss.zk.ui.util.GenericForwardComposer 并将其链接到您的zul中,如下所示:
    <window id="myWindow" apply="package.to.your.ClassThatExtendsGenericForwardComposer">
    <!-- your tabs go here -->
    </window>
    然后在您的班级中声明private Tab tab1;,您就可以立即使用它。
  3. 请注意使用应用关键字之间的差异。如果您使用第二种方法,请确保您的变量名称与组件的ID匹配(“tab1”)。