Componentes opacos en ventanas de Java transparentes
He tenido éxito en hacer transparentes las ventanas de Java, pero tengo problemas para superponer componentes opacos encima de esas ventanas. JFrame.setOpacity (0) y AWTUtilities setWindowOpacity transfieren transparencia a los componentes constituyentes. Además, JFrame.setBackground (0,0,0,0) de alguna manera sangra la transparencia de dichos componentes.
¿Cómo puedo arreglar esto?
clases de prueba: fondo transparente, setOpacity y AWTUtility, respectivamente
<code>import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.Color; public class test { public static void main(String[] args){ JFrame frame = new JFrame("test"); JLabel label = new JLabel("Label text"); frame.setUndecorated(true); frame.setBackground(new Color(0,0,0,128)); frame.add(label); frame.pack(); frame.setVisible(true); } } public class test2 { public static void main(String[] args){ JFrame frame = new JFrame("test"); JLabel label = new JLabel("Label text"); frame.setUndecorated(true); frame.setOpacity(.50f); frame.add(label); frame.pack(); frame.setVisible(true); } } import com.sun.awt.AWTUtilities; import java.lang.reflect.Method; import java.awt.Window; public class test3 { public static void main(String[] args){ JFrame frame = new JFrame("test"); JLabel label = new JLabel("Label text"); frame.setUndecorated(true); try { Class<?> awtUtilitiesClass = Class.forName("com.sun.awt.AWTUtilities"); Method mSetWindowOpacity = awtUtilitiesClass.getMethod("setWindowOpacity", Window.class, float.class); mSetWindowOpacity.invoke(null, frame, Float.valueOf(0.50f)); } catch (Exception x){} frame.add(label); frame.pack(); frame.setVisible(true); } } </code>
EDITAR: He intentado setBackground (0,0,0,0) en Windows, donde funciona, pero no funciona correctamente en Linux (xfce).