Непрозрачные компоненты в прозрачных окнах Java
Мне удалось сделать прозрачными окна Java, но у меня возникли проблемы с наложением непрозрачных компонентов поверх этих окон. JFrame.setOpacity (0) и AWTUtilities setWindowOpacity передают прозрачность составляющим компонентам. Кроме того, JFrame.setBackground (0,0,0,0) каким-то образом отбрасывает прозрачность в указанные компоненты.
Как я могу это исправить
test классы: прозрачный фон, setOpacity и AWTUtility соответственно
<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: я пробовал setBackground (0,0,0,0) в Windows, где он работает, но он не работает должным образом в Linux (xfce).