2

私は次のように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);
   }  

}

さて、タブにアクセスするためにハッシュマップを使用することは、回りくどい方法だと思います。getFellow(String id)メソッドを使用してタブにアクセスする方がはるかに簡単ですよね?しかし、それをどのように実装するかはわかりません。誰かがこれを手伝ってくれますか?

ありがとう、ソニー

4

2 に答える 2

1

getFellow()メソッドは、ZKのコンポーネントで使用できます。ユーザーはそのIDでコンポーネントにアクセスできます

myWindow.getFellow("label_1");

アプリケーションでZKMVCの方法を使用している場合。

**「コンポーザー」をデスクトップに保存すると、ページの任意の部分にアクセスできます。

于 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;と、すぐに使用できます。

useキーワードとapplyキーワードの違いに注意してください。2番目のアプローチを使用する場合は、変数の名前がコンポーネントのID( "tab1")と一致することを確認してください。

于 2010-11-26T04:26:33.053 に答える