package org.limewire.ui.swing.util; import java.awt.Window; import java.lang.reflect.Method; import javax.swing.JWindow; import org.limewire.util.OSUtils; public class WindowTransparencyUtils { /** * Sets the alpha transparency for a component. com.sun.awt.AWTUtilities * exists for java 1.6 update 10. Calling it for reflection to support older * 1.6 clients which it will not exist. Mac does not yet have a 1.6 update * 10 client yet, but they support a client property Window.alpha to get the * same effect. */ @SuppressWarnings("unchecked") public static void setAlpha(JWindow window, float alpha) { if (alpha >= .99f) { alpha = .99f;// prevents flash when component switches from opaque // to transparent } try { // windows, linux, solaris java 1.6 update 10 Class awtutil = Class.forName("com.sun.awt.AWTUtilities"); Method setWindowOpaque = awtutil.getMethod("setWindowOpacity", Window.class, float.class); setWindowOpaque.invoke(null, window, alpha); } catch (Exception ex) { if (OSUtils.isMacOSX()) { window.getRootPane().putClientProperty("Window.alpha", new Float(alpha));// mac } } } }