Nieprzezroczyste komponenty na przezroczystych oknach Java

Udało mi się uczynić okna java przezroczystymi, ale mam problem z nakładaniem nieprzezroczystych komponentów na te okna. JFrame.setOpacity (0) i AWTUtilities setWindowOpacity przenoszą przezroczystość na komponenty składowe. Ponadto JFrame.setBackground (0,0,0,0) w jakiś sposób przenika przezroczystość wspomnianym komponentom.

Jak mogę to naprawić?

klasy testowe: odpowiednio przezroczyste tło, setOpacity i 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>

EDYCJA: Spróbowałem setBackground (0,0,0,0) w Windows, gdzie to działa, ale nie działa poprawnie na Linuksie (xfce).

questionAnswers(1)

yourAnswerToTheQuestion