Java - ol' 透明 JFrame,没有限制库

标签 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);
}

但这只是一个白色的方 block 。关闭但没有雪茄。我也试过覆盖 paint 方法,有人说要扔掉 alpha channel ,但这使它变黑了(当然)。所以...它是 Stack Overflow。

如果有完全正确回答这个问题的骗子,请指出,我会立即删除。

更新 根据评论中的要求,这是我如何到达这里的历史:

每个人到达的第一个链接是how to create translucent and shaped windows.这里面有几行类似于“......具有 75% 不透明度的半透明框架”。所以...看起来它们的定义相同,至少在那篇文章中是这样。不幸的是,他们使用图书馆。

几个我可以找到的链接:

http://www.java-gaming.org/index.php?topic=24635.0 处报告了一个无效的“有效”解决方案这显示出一些希望,但我无法让它发挥作用。

http://techgearup.wordpress.com/2008/09/19/transparent-jframe-background/是一种使用屏幕截图的骇人听闻的方式,并且在其他几个地方也有重复。

最佳答案

如果不使用 Java v.6u10+ 或调用 native 代码的第三方库,则无法执行此操作。在 Swing Frames 中,对话框和窗口被认为是“顶级组件”,并在底层窗口系统中呈现。在 Java v6u10 之前,所有顶级组件都有一个默认的、不透明的浅灰色背景,并且无法从 Java 代码中更改它。

关于Java - ol' 透明 JFrame,没有限制库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648403/

相关文章:

java - 如何使用 JCheckbox 创建 JTree 以显示系统所有驱动器及其文件夹/文件

Java创建画笔描边 Action

java - 我如何设置 Jframe 窗口的默认外观

JAVA - 从不同类别获取随机数

java - java中多个for内部的计时方法

java - Android rtl 支持无需重新加载 Activity

java - 为什么我不能将 ArrayList<String> 用作通用 ArrayList<E> 方法的参数?

java - 变量未传递给方法绘制

java - 我的 ActionListener 有什么问题吗? (来源不明)

java - 程序终止而不在 Eclipse 中运行