
178
|
Chapter 5, Windows, Dialogs, and Frames
#34 Make a Draggable Window
HACK
However, this hack has one major flaw. Because the component events are
read-only, it is impossible to intercept the move and position the window
before it has been drawn on screen. Thus the window will flash as the user
moves it. Creating a custom event queue would seem to be the answer
because you could then modify the events before they are sent to the compo-
nents, but this won’t work for move events on windows (or any subclass like
JFrame). Windows are real structures provided by the operating system,
rather than purely Java objects. The window events are created by the OS
itself and passed into the JVM from the C level, meaning there is no way to
capture these before they take effect. Still, in many of your applications, the
flashing may be an acceptable trade-off for snapping.
H A C K
#34
Make a Draggable Window Hack #34
Drag a window by clicking on its background using a special event listener.
Most windows let you move them by dragging the titlebar. Some program
windows, however, don’t have titlebars. In the age of eye-candy interfaces
(see iTunes and WinAmp for prime examples) it is very common to have a
window—possibly non-rectangular—without any titlebar or window con-
trols at all. This makes for a pretty window, but how do you move it? Sim-
ply by dragging any available space on the window. Though not terribly ...