当我试图运行以获得透明帧时,它会显示异常。
我的代码是:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.05f);
}例外是:
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)发布于 2015-02-22 10:12:51
在打电话给setUndecorated(true)之前先打给setWindowOpacity。
在Java中,这种支持是在核心7+中提供的(不需要使用com.sun.*库)。有关更多详细信息,请参阅如何创建半透明和形状的Windows。例如,你可以用JFrame#setOpacity代替.
this.setOpacity(0.05f);哦,尽管本教程可能有什么建议,但我认为使装饰窗口透明的唯一方法是,当窗口不使用OS提供的装饰时(而且使用的是外观和感觉提供的装饰,并不是所有的外观和感觉都支持),但我可能错了。
发布于 2015-02-22 11:48:05
作为另一种选择,JavaFX本机支持透明窗口(参见此教程)。如果您刚刚开始使用Java编程,并且没有令人信服的理由使用Swing (即。一个遗留应用程序)我建议切换到JavaFX。Swing处于维护模式,所有新的东西都将进入JavaFX。我怀疑Swing能否从Oracle获得一个新特性。
https://stackoverflow.com/questions/28656647
复制相似问题