Java - 透明的JFrame,没有受限制的库

Ben*_*Ben 5 java swing jframe opacity

是的,这个问题无处不在.但是所有(工作)解决方案都使用受限制的AWTUtilities工具包.

所以.我只想控制窗口的不透明度.无需塑造或不整洁.只是一个透明的contentPane(简单)和透明的JFrame背景(非常困难).

我可以发誓我昨天得到了正确的组合,但现在我似乎无法重现它.还有一些解决方案没有使用AWTUtilities,但它们不起作用......有人有一个很好的解决方案吗?

我失败代码的一个例子:

public static void main(String[] args) {
    JFrame test = new JFrame();
    test.setSize(400, 400);
    test.setLocationRelativeTo(null);
    test.setUndecorated(true);
    test.setBackground(new Color(0, 0, 0, 0));
    test.getContentPane().setBackground(new Color(0,0,0,0));
    test.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

但这只是一个白色的方块.关闭但没有雪茄.我也尝试重写绘制方法,有人在说丢弃alpha通道的东西,但这使它变黑(当然).所以...... Stack Overflow就是这样.

如果有一个完全回答这个问题的骗局,请指出我,我会马上删除.

更新 评论中的每个请求,这是我如何到达这里的历史记录:

每个人到达的第一个环节是如何创建半透明和形状的窗户. 这里有几行类似于"......半透明的框架,不透明度为75%".所以...看起来它们的定义是相同的,至少在那篇文章中.不幸的是他们使用图书馆.

我可以追逐的几个链接:

http://www.java-gaming.org/index.php?topic=24635.0上报告了一个不起作用的"工作"解决方案,这显示了一些希望,但我无法使其正常工作.

http://techgearup.wordpress.com/2008/09/19/transparent-jframe-background/是一种使用屏幕截图的hackish方式,并且在其他一些地方也是重复的.

Nat*_*ate 1

如果不使用 Java v.6u10+ 或调用本机代码的第三方库,您就无法做到这一点。在 Swing Frames 中,对话框和 Windows 被视为“顶级组件”,并在底层窗口系统中呈现。在 Java v6u10 之前,所有顶级组件都有默认的、不透明的浅灰色背景,并且无法从 Java 代码中更改此背景。