2

我将一堆选项卡从 zul 文件传递​​到 java 文件,如下所示:

选项卡.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) 方法访问选项卡会简单得多,对吧?但是,我不确定如何实现。有人可以帮我弄这个吗?

谢谢,索尼

4

2 回答 2

1

getFellow() 方法可以用于 ZK 的组件。用户可以通过它的 ID 访问组件

myWindow.getFellow("label_1");

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

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

于 2010-11-15T12:39:16.560 回答
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;,您可以立即使用它。

请注意useapply关键字之间的区别。如果您使用第二种方法,请确保您的变量名称与您的组件的 id 匹配(“tab1”)。

于 2010-11-26T04:26:33.053 回答