
Make Your Frame Dissolve #42
Chapter 6, Transparent and Animated Windows
|
223
HACK
Create a Genie Effect
One of my favorite bits of eye candy from Mac OS X is the minimize dis-
solve. When you click on the minimize button in any application, the win-
dow will shrink and slide into the dock. This is called the genie effect, and it
not only looks cool, but it also gives you feedback about where a window
has gone. Example 6-3 is a subclass of
Dissolver that overrides the paint( )
method to create a spinning, shrinking window that somewhat mimics the
genie effect.
Example 6-2. A simple test class
public class DissolveHack {
public static void main(String[] args) {
final JFrame frame = new JFrame("Dissolve Hack");
JButton quit = new JButton("Quit");
quit.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent evt) {
new Dissolver( ).dissolveExit(frame);
}
});
frame.getContentPane( ).add(quit);
frame.pack( );
frame.setLocation(300,300);
frame.setSize(400,400);
frame.setVisible(true);
}
}
Example 6-3. Adding a genie effect to your toolbox
class SpinDissolver extends Dissolver {
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
// draw the screen, offset in case the window isn't at 0,0
g.drawImage(screen_buffer,-fullscreen.getX( ),
-fullscreen.getY( ),null);
// save the current transform
AffineTransform old_trans = g2.getTransform( );
// move to the upper-lefthand ...