GWT allows the usage of a rich event based paradigm.
As one of the other replies suggest, think of your GUI design in terms
of Swing (as this uses a similar event based approach).
In addition you can navigate the widget hierarchies; you can get the
parent of any widget by calling getParent().
Almost all 'widget containers' implement the interface HasWidgets
which amongst other things allows you to iterate through the widgets
in the container.
You can even (if you wish, but I would recommend against it) navigate
through the DOM by using the DOM class in com.google.gwt.user.client.
This same package also contains the class Event which lists all of the
events you can subscribe to.
You can of course simply pass the Java reference from one widget to
another widget (usually when constructing the 2nd widget), however, it
is preferable to avoid this.
If you were to do this it would / should be done in your Java code not
in JavaScript.
You need to think of your application as a Java application where the
GUI happens to be translated into JavaScript & HTML for the purpose of
executing it in a browser, just as server-side Java code is translated
into byte-code so that it can be executed by a JVM.
To understand more about the GWT event system look at the following
interfaces in com.google.gwt.client,ui
Those named Source... and those named ...Listener.
Looking at the interfaces named Has... is also useful so that you can
see how you can interrogate the features / capabilities of widgets
etc. in a Java centric fashion.
In you find that the event based system is to complex or more than you
need at the moment you can still use pointers (references) to widgets,
but rather than having a widget directly bound to another widget, it
is better to have the first widget call a method in a 'controller'
class and to have the controller class modify the 2nd widget. This is
similar to but initially less complex than using events, and is a step
on the way to an MVC (Model, View, Controller) approach.
I hope this helps.