Search code examples
javaswingjframejava-7translucency

Is it possible to have a translucent windows in java 7 including a title bar?


Related to this question: Is The Java Tutorials Translucent Window example giving trouble to those playing with jdk7?

with jdk1.6.0_26 I seem to be able to apply translucency to a JFrame, but not so with jre7:

NativeException: java.awt.IllegalComponentStateException: The frame is decorated

ex (jruby scripting java, works jdk1.6 not with jdk7 though):


require 'java'

class 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
  end

end
MouseDraw.go

So my question is "is it possible to have a translucent title bar in jdk7" (I would like a transparent window I'm creating to be draggable/resizable)


Solution

  • Java 7 introduced Window.setOpacity() to do what the unofficial class AWTUtilities did in Java 6.

    Unfortunately it's documented not to work with decorated windows:

    The following conditions must be met in order to set the opacity value less than 1.0f:

    (Emphasis mine)