Translucent and shaped windows in JDK 7
The latest weekly drop of JDK 7 (b57) has finally exposed the functionality of translucent and shaped windows as publicly supported APIs on the java.awt.Window class. Bug 6802853 has tracked the progress of exposing these APIs previously available in 6u10+ in the internal com.sun.awt.AWTUtilities class, and it’s time to update the examples to use the new public APIs.
To recap, here are the previous entries that used the AWTUtilities class:
- Translucent and shaped windows in core Java talked about the AWTUtilities class in 6u10 and support for modern top-level windows effects.
- Soft clipping and per-pixel translucency for Swing windows explored the translucent effects on top-level windows.
- More tricks with translucent Swing windows followed up with the different effects achievable with the new translucent window support.
All the source files referenced in these examples have been updated to use the new Window APIs, and here is a brief overview of the relevant API signatures:
- AWTUtilities.isTranslucencySupported(Translucency) is now GraphicsDevice.isWindowTranslucencySupported(WindowTranslucency).
- AWTUtilities.isTranslucencyCapable(GraphicsConfiguration) is now GraphicsConfiguration.isTranslucencyCapable().
- AWTUtilities.setWindowShape(Window, Shape) is now Window.setShape(Shape).
- AWTUtilities.setWindowOpacity(Window, float) is now Window.setOpacity(float).
- AWTUtilities.setWindowOpaque(boolean) is superceded by Window.setBackground(Color). Passing the new Color(0, 0, 0, 0) achieves the old effect of installing per-pixel translucency.
You can see the Javadocs of the new Window methods in the corresponding Mercurial diff, or in the source archive bundled with the b57 installer.
Note that the com.sun.awt.AWTUtilities class is still there, and calling its API methods still produces the correct visuals. A quick look at the implementation reveals that the AWTUtilities methods do not (yet) go directly to the new Window methods, perhaps converging deeper in the AWT internals.