0

ページに次のレイアウトがあるとします。

vertical panel mainbody = new VerticalPanel;

//beginning of 1st sub-vertical panel
VerticalPanel first_panel = new verticalPanel();
first_panel.add(...);
//other such stuff, end of first_panel
mainbody.add(first_panel);

//beginning of 2nd sub-vertical panel
VerticalPanel second_panel = new verticalPanel();
second_panel.add(...);
//other such stuff, end of first_panel
mainbody.add(second_panel);

//beginning of 3rd sub-vertical panel
VerticalPanel third_panel = new verticalPanel();
third_panel.add(...);
//other such stuff, end of first_panel
mainbody.add(third_panel);

//end of mainbody
RootPanel.get().add(mainbody);

各サブパネル(、、および)が個々のファイルに属するようにモジュール化したいfirst_panelのでsecond_panelthird_panelインポートした後、メインページでこれをコーディングするだけでトリックを実行できます。

vertical panel mainbody = new VerticalPanel;

mainbody.add(first_panel);
mainbody.add(second_panel);
mainbody.add(third_panel);

//end of mainbody
RootPanel.get().add(mainbody);

サブパネル自体は、モジュール化をカスケードする必要がある他のサブパネルを使用する場合があります。これを有効にするにはどうすればよいですか?Googleのドキュメントは私にははっきりしていません。具体的には、

  1. これらのパネルを個々のファイル(パッケージまたはフォルダー)で定義して、メインファイルにインポートできるようにするにはどうすればよいですか?

  2. それらをインポートするにはどうすればよいですか(includePHPのように)?

  3. ファイルにどのような変更を加える必要がありxmlますか(必要な場合)?

  4. インポートされたファイルにも同じルールのセットを定義して、インポートがカスケードされるようにするにはどうすればよいですか?つまり、aインポートbし、bインポートcdてそれ自体を構築する場合、両方ともcメインdファイルにインポートされます。

  5. メインのCSSファイルのCSSルールは、インポートされたすべてのパネルに十分ですか?

付属のデフォルトのStockWatcherアプリの観点から(ディレクトリ構造を理解するための共通の基盤を持てるように)誰かがこれを説明できればGWT、私には理解しやすいでしょう。

4

2 に答える 2

3

Widgetあなたはパネルから作る必要があります。

package com.example.widgets // Make this package whatever you want

import com.google.gwt.user.client.ui.Composite

public class FirstPanel extends Composite{

    private VerticalPanel verticalPanel;

    public FirstPanel(){

        verticalPanel = new VerticalPanel();

        // All composites must call initWidget() in their constructors.
        initWidget(verticalPanel);

        // For your CSS
        setStyleName("example-SomeStyle");

        // Continue constructing object ...
    }

}

initWidget()コンストラクターを使用するたびに、を1回だけ呼び出す必要があります。コンポジットによってラップされるようにウィジェットを設定します。こちらのドキュメントを確認してください。

そうすれば、そのように使用できるようになります

VerticalPanel mainPanel = new VerticalPanel();

FirstPanel firstPanel = new FirstPanel();
mainPanel.add(firstPanel);
  1. 上記はポイント1に答える必要があります

  2. ウィジェットが上記のコードと同じパッケージにない場合は、それをインポートする必要があります。上記の例の場合:import com.example.widget.FirstPanel

  3. XMLファイルに変更を加える必要はありません

  4. はい、説明したようにインポートはカスケードされます。

  5. ウィジェットでスタイル名を宣言する限り、メインCSSのCSSルールで十分です。setStyleName("example-SomeStyle");上記の例でわかるように、を呼び出すことでそれを行うことができます。

于 2013-01-22T02:08:08.703 に答える
1

あなたが求めているのはカスタムウィジェットと呼ばれています。first_panelを表すカスタムウィジェット、second_panelを表す別のウィジェットなどを作成できます。次に、必要に応じて、他のウィジェットで構成されるウィジェットを作成できます。各カスタムウィジェットは個別のクラスです。個別のファイル(または、カスタムウィジェットにUi:Binderを使用する場合は2つのファイル)で表されます。

カスタムウィジェットの詳細については、 https ://developers.google.com/web-toolkit/doc/latest/DevGuideUiCustomWidgetsをご覧ください。

于 2013-01-21T23:36:42.117 に答える