The tutorial that helloworld points to will get one started on how to create a GUI, and as already mentioned knowing how everything works behind the scenes is far from crucial to create a GUI. That being said, I believe the Swing/AWT gui works quite similarly to other GUI's, conceptually. There is a single continuous thread that deals with the GUI (called the Event Dispatch Thread), and events are 'dispatched' to this thread and dealt with in the order they are dispatched for drawing/updating the GUI (the reason a GUI will hang or freeze if one places a long computationally intensive process in a Listener interface). The EDT is a single threaded model, so if you spawn other threads it is adviseable to dispatch any updates to the GUI to the EDT. Many of the listener interfaces in AWT/Swing work similarly to the callback mechanism