
296
|
Chapter 8, Rendering
#58 Block a Window Without a Modal Dialog
HACK
// create the right-click glass pane.
Component rc = new RightClickGlassPane(frame.getContentPane( ),popup);
// set as glasspane and make it visible
frame.setGlassPane(rc);
rc.setVisible(true);
// pack and show the frame
frame.pack( );
frame.setSize(400,200);
frame.show( );
}
While most of this is boilerplate, be sure to notice the call to rc.setVisible().
This is where the glass pane is turned on. If the glass pane is not visible, then
your code won’t ever receive events and work its magic.
This hack only demonstrates intercepting a mouse click, but it could be used
for any other type of event capturing, such as remapping one key to another,
recording mouse events, blocking mouse events
[Hack #58], or creating com-
pletely synthetic events to fool the program.
H A C K
#58
Block a Window Without a Modal Dialog Hack #58
Block the input in a single window during long operations without stopping
your entire application.
Since the dawn of GUIs, most toolkits have had the concept of a modal dia-
log box. This is a small window that restricts input to itself, blocking access
to the rest of the program (or entire operating system in some cases). Modal
windows often produce the desired effect, but sometimes you need a win-
dow that can block itself without blocking access to the whole application.
The most common use for such a windo