Componentes opacos em janelas Java transparentes
Tenho tido sucesso em tornar as janelas java transparentes, mas estou tendo problemas para sobrepor componentes opacos em cima dessas janelas. JFrame.setOpacity (0) e AWTUtilities setWindowOpacity toda transparência de transferência para componentes constituintes. Além disso, JFrame.setBackground (0,0,0,0) de alguma forma sangra a transparência para os componentes mencionados.
Como posso consertar isso?
classes de teste: fundo transparente, setOpacity e 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>
EDIT: Eu tentei setBackground (0,0,0,0) no Windows, onde ele funciona, mas não funciona corretamente no Linux (xfce).