1

我很难将所有点与 GWT 的事件侦听器模型联系起来。假设您有一个 Button 小部件,当用户单击它时,您希望屏幕上其他位置的文本从黑色变为红色(只是考虑一个超级简单的示例)。

当用户单击按钮时,按钮单击事件被放置在事件总线上,该事件总线配置有希望在此事件发生时得到通知的处理程序/侦听器。这与Places、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);
   }
}

如果您真的对此感兴趣,您可以通过调试来查看“流程”,但无需进行“手动往返”或任何其他操作。历史,顺便说一句,BTW 是一个单独的类,用于监听浏览器本身的前进和后退按钮,以及其他一些东西,但根本不需要做你提到的事情。

于 2012-11-29T04:18:16.907 回答