Undurchsichtige Komponenten in transparenten Java-Fenstern

Es ist mir gelungen, Java-Fenster transparent zu machen, aber ich habe Probleme, undurchsichtige Komponenten über diese Fenster zu legen. JFrame.setOpacity (0) und AWTUtilities setWindowOpacity übertragen die Transparenz auf die einzelnen Komponenten. Darüber hinaus blendet JFrame.setBackground (0,0,0,0) die Transparenz in die Komponenten ein.

Wie kann ich das beheben?

Testklassen: transparenter Hintergrund, setOpacity bzw. 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: Ich habe setBackground (0,0,0,0) unter Windows ausprobiert, wo es funktioniert, aber es funktioniert nicht richtig unter Linux (xfce).

Antworten auf die Frage(1)

Ihre Antwort auf die Frage