【问题标题】:GWT: Roundtrip Example With Button ClickGWT:带有按钮单击的往返示例
【发布时间】:2012-10-26 01:41:38
【问题描述】:

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

当用户单击按钮时,按钮单击事件被放置在事件总线上,该事件总线上配置了希望在此事件发生时得到通知的处理程序/侦听器。这与Places、PlaceChangeEvents 和 GWT History API 有何关联?

如果有人代码提供了这个“往返”过程的超级简单但功能的代码示例,从按钮单击到在总线上触发点击事件,再到在总线上处理事件,更新适当的地点/历史对象,最后将文本更改为红色,我想我可以连接许多当前缺失的点。提前致谢!

【问题讨论】:

  • 您要求的是一个功能齐全的项目框架,其中包含一些已实现的功能。在这里做起来没那么容易。诸如此类的方法的问题在于,这一切都归结为精心设计的框架项目。也许code.google.com/p/google-web-toolkit/downloads/… 会有所帮助。这是一个现成的项目,我认为会有所帮助。
  • 您的示例中不需要 EventBus。您只需将 ClickHandler 附加到您的按钮。 EventBus 对于更复杂的情况很有用,当一个视图中发生某些事情并且您想在其他三个视图中进行更改时甚至不可见,并且您不想使用常规 ClickHandler 将它们全部连接起来(例如) .您无需接触 EventBus 即可构建大型 GWT 应用程序。我建议您稍后离开 EventBus,当您对 Handlers 感到满意时。

标签: java gwt


【解决方案1】:

GWT 有许多类型的事件,要真正理解它们并不容易。有些事件只发生在逻辑中,有些则来自 DOM(可以在capture or bubbling 中使用)等等。

一次只走一步,因为您似乎试图将不同的事件混合在一起。 (按钮点击和历史事件是完全独立的事件)。一般来说,这个想法是许多类提供不同类型的事件,并且您为您关心的事件连接处理程序。然后,您的处理程序可以调用其他类或生成其他事件。您想要的代码实际上非常简单,这是您项目中唯一需要的类:

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 是一个单独的类,用于监听浏览器本身的前进和后退按钮,以及其他一些东西,但根本不需要做你提到的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多