
54
|
Chapter 1, Basic JComponents
#12 Add Translucence to Menus
HACK
No constructor is required because all UI classes have a no-arg constructor
automatically. All UI classes also need a static
createUI( ) method to create a
new instance of the class, as you can see in the example. In the
paint( )
method, instead of drawing on the graphics object passed in, the code cre-
ates a buffered image with the same dimensions as the component, and then
calls
super.paint( )
. This will draw the component onto the buffered image
instead of the screen. Once the painting is done, it can apply a transform and
then draw the image buffer onto the real
Graphics. In this case, the trans-
form is an alpha composite of
0.8. This means that instead of drawing the
buffer as is, it will draw the buffer partially transparent (80% solid, in this
case). This will draw the
bufferedimage into the real graphics with a translu-
cent effect. You can vary the strength of the translucency by modifying the
second parameter to the
AlphaComposite.getInstance( ) method (1 results in
a solid,
0 is totally transparent).
Add a Custom JMenu
If you stopped with just the custom menu items, the menus would seem a
bit translucent, but the rest of the window wouldn’t shine through. This is
because the menu items are inside of another component; in fact, they’re
inside of three! The
JMenu puts all of the menu items inside of a JPopupMenu,
which is placed