2009-06-05 60 views

回答

0

JFrame的任何想法,不能做成透明的,因爲它是一個重量級的組件。只有JWindow之類的輕量級組件可以變得透明。

2

由於Java 1.3有一個技巧,它允許讓部分透明的窗口,或在(我通常使用這個對我的閃屏)衰落的窗戶,或特殊FX(如陰影):

  • 開幕前在窗口中,以編程方式截取窗口所在區域的屏幕截圖(使用java.awt.Robot.createScreenCapture())
  • 將屏幕截圖設置爲根容器的背景(使用自定義paintComponent()例程的JPanel )
  • 現在你可以添加各種透明元件,或者畫另一個半透明的元件t背景上的圖像。

例子使用這種技術一半透明陰影創建一個窗口: http://www.eclipsezone.com/eclipse/forums/t17720.html

+0

這是可行的,但我發現在一些系統上它可能非常昂貴。拍攝一個巨型多顯示器設置的截圖並重新繪製它,因爲背景可能會真的閃爍,特別是如果用戶可以拖動/移動窗口。對於飛濺或某些不可移動的東西,它會工作。 – 2009-06-05 18:06:11

2

沒有太大的幫助你,但Java7支持透明和不規則窗口:More info here。這些已經在Java 6u10中可用,但不公開,也就是說,您需要使用不受支持的com.sun ...類,它可能會在將來發生更改並破壞您的程序。

1

試試這個。它的工作:)

yourframe.setBackground(new Color(0, 0, 0, 180)); 
yourframe.setUndecorated(true); 
yourframe.addComponentListener(new ComponentAdapter() { 
       @Override 
       public void componentResized(ComponentEvent e) { 
        setShape(new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), 80, 80)); 
       } 
      });