2010-11-18 252 views
2

我有一個帶有盒子圖標的JLabel。我在photoshop中創建圖標的圖像。這是一個背景完全擦除的PNG-24圖像。Java - JLabel背景不完全透明?

但是,當在深色背景的頂部移動,你可以看到,背景是不完全透明:

image


編輯#2:

圖像是透明的。我甚至通過Photoshop教程,以確保我正確地創建一個透明的圖像。這個問題似乎與Java(和JLabels)有關。

我該如何解決這個問題?

+0

如果圖像*** ***結束透明那麼爲什麼沒有出現在HTML頁面透明? – pstanton 2010-11-18 22:40:31

回答

4

我測試過你的圖像,它不透明。當然這就是原因。

<html> 
<body style="background-color:#99cccc;"> 
    <table> 
    <tr> 
     <th>your one isn't transparent</th> 
     <th>this one is</th></tr> 
    <tr> 
     <td><img src="http://i.stack.imgur.com/BvYxM.png" style="border:5px solid green;"/></td> 
     <td><img src="http://www.axdn.com/redist/axpssp_logo.png" style="border:5px solid green;"/></td></tr> 
    </table> 
</body> 
</html> 

@Gabe:粘貼到一個html文件並加載到瀏覽器中。這顯然不是與Java有關的任何問題。

這裏有一個java證明你的圖像不透明,並且一個合適的透明PNG工作正常。

public static void main(String[] args) throws Throwable 
{ 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    Container cp = frame.getContentPane(); 
    cp.setBackground(Color.RED); 
    cp.setLayout(new FlowLayout()); 

    cp.add(new JLabel(new ImageIcon(new URL("http://i.stack.imgur.com/BvYxM.png")))); 
    cp.add(new JLabel(new ImageIcon(new URL("http://www.axdn.com/redist/axpssp_logo.png")))); 

    frame.pack(); 
    frame.setVisible(true); 
} 
+0

那我該如何解決呢?我刪除所有在Photoshop中的背景?看起來像Java處理圖像的方式不同。 – 2010-11-18 04:04:50

+0

使用File/Save for Web以保存具有透明度的PNG。 – msell 2010-11-18 07:59:40

+0

我是。確實如此。 – 2010-11-18 08:42:23

1

您可以嘗試使用GIF格式並相應地設置alpha值。 我目前無法看到您的圖片。 那麼,確保你創建的圖像是透明的。 否則,你不會得到它,因爲你需要。

製作透明圖像樣品指導:LINK

+0

這也沒有效果。我知道它必須是一個PNG。 (我以前讀過Java的透明文件只能用於PNG。) – 2010-11-18 07:08:53

+0

嘿....我想我在這裏遇到了同樣的事情。 一旦我的PNG顯示OK,但是當我重新繪製它時,它也給我黑色背景......那麼,如何修復它? :( – gumuruh 2011-08-09 03:47:46