首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得透明的JFrame?

如何获得透明的JFrame?
EN

Stack Overflow用户
提问于 2015-02-22 10:08:16
回答 2查看 1.1K关注 0票数 0

当我试图运行以获得透明帧时,它会显示异常。

我的代码是:

代码语言:javascript
复制
public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
        com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.05f);
    }

例外是:

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated
at java.awt.Frame.setOpacity(Frame.java:960)
at java.awt.Window$1.setOpacity(Window.java:4032)
at com.sun.awt.AWTUtilities.setWindowOpacity(AWTUtilities.java:174)
at test.NewJFrame.<init>(NewJFrame.java:28)
at test.NewJFrame$2.run(NewJFrame.java:115)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-22 10:12:51

在打电话给setUndecorated(true)之前先打给setWindowOpacity

在Java中,这种支持是在核心7+中提供的(不需要使用com.sun.*库)。有关更多详细信息,请参阅如何创建半透明和形状的Windows。例如,你可以用JFrame#setOpacity代替.

代码语言:javascript
复制
this.setOpacity(0.05f);

哦,尽管本教程可能有什么建议,但我认为使装饰窗口透明的唯一方法是,当窗口不使用OS提供的装饰时(而且使用的是外观和感觉提供的装饰,并不是所有的外观和感觉都支持),但我可能错了。

票数 2
EN

Stack Overflow用户

发布于 2015-02-22 11:48:05

作为另一种选择,JavaFX本机支持透明窗口(参见此教程)。如果您刚刚开始使用Java编程,并且没有令人信服的理由使用Swing (即。一个遗留应用程序)我建议切换到JavaFX。Swing处于维护模式,所有新的东西都将进入JavaFX。我怀疑Swing能否从Oracle获得一个新特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28656647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档