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