2012-05-07 5 views
1

私の問題は私のGWTプロジェクトです。 クライアントパッケージにMain.java(EntryPoint)とRegistration.java(Composite)という2つのファイルがあります。登録クラスは登録のためのユーザーインターフェースです(テキストボックスとボタンがあります)コンポジットからエントリーポイントクラスに情報を送るにはどうしたらいいですか?

登録フォームに登録ボタンがあります。私の問題はここにあります。ユーザーがボタンをクリックすると、登録クラスからEntryPointクラスにこの情報をどのように送信できますか?

これは私のonModuleLoadメソッドです。

....

登録登録=新規登録()。

 dockLayoutPanel.add(registration); 

....

答えて

1

Useコマンド・パターンは、例えば私はまた、インタフェース

public interface SuperPuperHandler<T> { 
    public void onFire(T t); 
} 

とご登録のクラスのを持っているハンドラを保存する追加:

public class Registration extends Composite{ 
     private SuperPuperHandler<MySavedObject> saveHandler; 

     public void addSaveHandler(SuperPuperHandler<MySavedObject> saveHandler){ 
      this.saveHandler=saveHandler; 
     } 

     ..... 
     savebutton.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent clickEvent) { 
       if(saveHandler!=null){ 
        saveHandler.onFire(mysavedObject); 
       }    
      } 
     }); 

}

ので、ここで何をするかですあなたのEntryPoint

public class Main implements EntryPoint { 

     .... 
     Registration registration =new Registration(); 
     registration.addSaveHandler(new SuperPuperHandler<MySavedObject>(){ 
      public void onFire(MySavedObject t){ 
       // here is saved objects in registration form 
      } 
     }); 

} 
+0

それは感謝して動作しますが、情報を得るためのより良い方法です。私はウェブサイトを作成したいと思うし、メインページに登録フォームがあります。ユーザーがこのフォームを入力して登録をクリックすると、登録コンポジットは削除され、別のコンポジットコールはuserPanelが追加されます。 userPanelには、このユーザーが情報を入力します。私の英語のために申し訳ありません – hellzone

0

私はあなたがObserverパターンを使うべきだと思います。登録コンポーネントには、「ユーザーがボタンを押した」というイベントを処理するリスナーを追加する方法が必要です。

手作り最も簡単な方法は、単に自分で定義している

:その後、

void addClickListener(ClickListener l) { 
    this.listener = l; 
} 

interface ClickListener { 
    onButtonClicked(...); // use params if you want 
} 

とご登録のコンポーネントがリスナーを設定する方法を提供しますボタンをクリックすると簡単にリスナー(インターフェイス)を呼び出します

0123あなたがイベントのクラスを定義し、特定の方法でハンドラを登録、それはできるはずです。この場合、GWTのイベント

を使用して

Registration r = ... 
r.addClickListener(new ClickListener() { 
    public void onButtonClicked(...) { 
     // do what you need 
    } 
} 

:あなたのエントリーポイントは、いくつかのリスナーを登録する必要があり

... if (listener != null) listener.onButtonClicked(...); // pass arguments if you want ... 

過度のものである。私はそれについてのドキュメントを見つける場合。私はこの答えに追加します。

関連する問題