首页 > 解决方案 > Java-如何降低 Java 中装饰 JFrame 的不透明度?

问题描述

我正在尝试更改 JFrame 的不透明度,但不要将其设置为 Undecorated,因为它会删除它的 Tilte Bar。

我试过这个: -

JFrame subFrame = new JFrame();
subFrame.setBounds(0, 0, 500, 500);
subFrame.setVisible(true);
subFrame.setOpacity(0.80f);

但它给出了错误: -

Exception in thread "main" java.awt.IllegalComponentStateException: The frame is decorated
at java.awt.Frame.setOpacity(Unknown Source)
at TransparentFrame.main(TransparentFrame.java:26)

请帮我!!!!!!!!!

标签: javajframeopacity

解决方案


javaDocs 清楚地说明 JFrame 必须未经修饰才能使用 setOpacity() 方法。所以不幸的是这是不可能的。至少不是你这样做的方式。您可以使用以下(不是很干净)解决方法:

JFrame.setDefaultLookAndFeelDecorated(true); //Before you create the JFrame.
UIManager.setLookAndFeel(new MetalLookAndFeel());

然后创建您的 JFrame 实例。


推荐阅读