我正在用java中的圓角創建一個登錄窗口。一切正常,請參閱圖片,但我遇到了使JFrame/ContentPane透明的挑戰。在每個角落有白色區域(由箭頭顯示),我似乎無法刪除,因爲我無法將JFrame或ContentPane的相關設置爲false。創建一個四捨五入的JFrame/ContentPane
的我怎麼可以刪除這些白色區域 alt text http://i39.tinypic.com/dmsile.png
我正在用java中的圓角創建一個登錄窗口。一切正常,請參閱圖片,但我遇到了使JFrame/ContentPane透明的挑戰。在每個角落有白色區域(由箭頭顯示),我似乎無法刪除,因爲我無法將JFrame或ContentPane的相關設置爲false。創建一個四捨五入的JFrame/ContentPane
的我怎麼可以刪除這些白色區域 alt text http://i39.tinypic.com/dmsile.png
JFrame的任何想法,不能做成透明的,因爲它是一個重量級的組件。只有JWindow之類的輕量級組件可以變得透明。
由於Java 1.3有一個技巧,它允許讓部分透明的窗口,或在(我通常使用這個對我的閃屏)衰落的窗戶,或特殊FX(如陰影):
例子使用這種技術一半透明陰影創建一個窗口: http://www.eclipsezone.com/eclipse/forums/t17720.html
沒有太大的幫助你,但Java7支持透明和不規則窗口:More info here。這些已經在Java 6u10中可用,但不公開,也就是說,您需要使用不受支持的com.sun ...類,它可能會在將來發生更改並破壞您的程序。
試試這個。它的工作:)
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));
}
});
這是可行的,但我發現在一些系統上它可能非常昂貴。拍攝一個巨型多顯示器設置的截圖並重新繪製它,因爲背景可能會真的閃爍,特別是如果用戶可以拖動/移動窗口。對於飛濺或某些不可移動的東西,它會工作。 – 2009-06-05 18:06:11