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