java - GWT:带有按钮单击的往返示例

标签 java gwt

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

当用户单击按钮时,按钮单击事件将被放置在事件总线上,该事件总线配置有希望在该事件发生时收到通知的处理程序/监听器。这如何与 PlacePlaceChangeEvent 和 GWT History API 联系起来?

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

最佳答案

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);
   }
}

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

关于java - GWT:带有按钮单击的往返示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079695/

相关文章:

java - GWT 历史的登录问题

java - 方法完成后 PostgreSQL 关闭连接

java 删除一个组件

java - 在 gwt.xml 中设置语言环境不起作用

Javascript 中的 Java 面向对象概念

java - anchor 中包含行的网格在 GWT (UIBinder) 中不可见

security - 更多 GWT 和 Tomcat 6 安全问题 (windows)

java - 在枚举类型上实现 `next` 和 `previous` 的最佳方法是什么?

java - Activity 布局未显示

java - Maven 打包后无法读取架构文档