-3

为什么这个语句在 java (NetBeans IDE 7.2.1)

com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.3f);

出现以下错误:

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated
    at java.awt.Frame.setOpacity(Frame.java:960)
4

1 回答 1

3

来自 java 文档

不透明度值在 [0..1] 范围内。请注意,将不透明度级别设置为 0 可能会或可能不会禁用此窗口上的鼠标事件处理。这是依赖于平台的行为。

必须满足以下条件才能将不透明度值设置为小于 1.0f:

  • TRANSLUCENT 半透明必须得到底层系统的支持
  • 窗口必须是未装饰的(参见 setUndecorated(boolean) 和 > Dialog.setUndecorated(boolean))
  • 窗口不得处于全屏模式(请参阅 > GraphicsDevice.setFullScreenWindow(Window))

如果请求的 opacity 值小于 1.0f,并且不满足以上任一条件,则窗口不透明度不会改变,并且会抛出 IllegalComponentStateException。

你显然没有满足其中一个条件,最有可能是第二个

于 2013-02-27T14:55:24.273 回答