1

すべての点を GWT のイベント リスナー モデルと結び付けるのに苦労しています。Button ウィジェットがあり、ユーザーがそれをクリックしたときに、画面の別の場所にテキストを黒から赤に変更したいとします (非常に単純な例を考えてみてください)。

ユーザーがボタンをクリックすると、ボタン クリック イベントがイベント バスに配置されます。これは、このイベントが発生したときに通知を受け取るハンドラー/リスナーで構成されています。Placeこれは、s、PlaceChangeEvents、および GWT History API とどのように結びついているのでしょうか?

ボタンのクリックからバスでのク​​リック イベントの発生、バスからのイベントの処理、適切な場所/履歴オブジェクトの更新まで、この「ラウンドトリップ」プロセスの非常に単純で機能的なコード例を誰かのコードが提供する場合、最後に、テキストを赤に変更すると、現在欠けているドットの多くを接続できると思います。前もって感謝します!

4

1 に答える 1

0

GWT には多くの種類のイベントがあり、それらすべてを完全に理解することは容易ではありません。一部のイベントはロジックでのみ発生し、他のイベントは DOM から発生します (キャプチャまたはバブリングのいずれかで使用できます)、などです。

さまざまなイベントを混ぜ合わせようとしているように見えるので、一度に一歩ずつ進んでください。(ボタンのクリックと履歴イベントは完全に独立したイベントです)。一般に、多くのクラスがさまざまな種類のイベントを提供し、関心のあるイベントのハンドラーを接続するという考え方です。その後、ハンドラーは他のクラスを呼び出したり、他のイベントを生成したりできます。必要なコードは実際には非常に単純です。これは、プロジェクトで必要な唯一のクラスです。

public class Sandbox_gwt implements EntryPoint
{
   public void onModuleLoad()
   {
      final Label label = new Label("I'm red");
      label.getElement().getStyle().setBackgroundColor("#FF9999");

      Button button = new Button("click me!");
      button.addClickHandler(new ClickHandler()
      {
         @Override
         public void onClick(ClickEvent event)
         {
            label.getElement().getStyle().setBackgroundColor("#99FF99");
            label.setText("I'm green");
         }
      });

      RootPanel.get().add(label);
      RootPanel.get().add(button);
   }
}

これをデバッグすることで本当に「フロー」を見ることができますが、「手動往復」などを行う必要はありません。歴史、ところで、ブラウザ自体の進むボタンと戻るボタン、およびその他のものをリッスンする別のクラスですが、あなたが言及したことを行うためにはまったく必要ありません。

于 2012-11-29T04:18:16.907 に答える