7

与此问题相关: Java 教程半透明窗口示例是否会给使用 jdk7 的人带来麻烦?

使用 jdk1.6.0_26 我似乎能够对 JFrame 应用半透明,但使用 jre7 则不然:

NativeException:java.awt.IllegalComponentStateException:框架被装饰

ex(jruby scripting java,虽然 jdk1.6 不适用于 jdk7):

需要'java'

类 MouseDraw

  def self.go
    java_import 'javax.swing.JFrame'
    java_import 'com.sun.awt.AWTUtilities'

    f = JFrame.new
    AWTUtilities.set_window_opacity(f, 0.5)
    f.set_size 200,200
    f.show
  结尾

结尾
MouseDraw.go

所以我的问题是“jdk7中是否有可能有一个半透明的标题栏”(我希望我创建的透明窗口可以拖动/调整大小)

4

2 回答 2

8

Java 7 引入了 Java 6Window.setOpacity()中非官方类AWTUtilities所做的事情。

不幸的是,它被记录在不能与装饰窗户一起使用:

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

(强调我的)

于 2011-09-09T08:24:45.407 回答
3

令人着迷的是,如果您添加

JFrame.setDefaultLookAndFeelDecorated(true);

然后它允许你有一个可拖动的,带有标题栏的 JFrame(它只是使用丑陋的 java 外观和感觉)。

ref:将鼠标事件从 Java UI 传递给后面的应用程序

现在这很奇怪。

另请注意,您可以使用每像素透明度“伪造”旧行为,请参阅http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shape_windows.html

所以你可以在java 6和7中都有旧的行为,但是你必须对它周围的代码进行特殊处理,并以一种方式为一种方式,另一种方式为另一种方式,可能......

于 2011-09-13T22:05:45.717 回答