2010-11-18 7 views
2

J'ai un JLabel avec une icône de boîte dessus. Je crée l'image de l'icône dans photoshop. C'est une image png-24 avec le fond complètement effacé.Java - Le fond de JLabel n'est pas entièrement transparent?

Mais quand il est déplacé au-dessus d'un fond sombre, vous pouvez voir que l'arrière-plan est pas complètement transparent:

image


EDIT # 2:

L'image transparente . J'ai même passé par des tutoriels photoshop pour m'assurer que je crée une image transparente de la bonne façon. Le problème semble être avec Java (et JLabels).

Comment résoudre ce problème?

+0

si l'image *** *** IS transparent alors pourquoi ne pas apparaître comme transparent dans une page html? – pstanton

Répondre

4

J'ai testé votre image, elle n'est pas transparente. c'est sûrement la raison.

<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: collez ceci dans un fichier html et chargez-le dans un navigateur. Ce n'est clairement pas un problème avec tout ce qui touche à Java.

Voici une preuve java que votre image n'est pas transparente ET qu'un PNG transparent fonctionne correctement.

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

Comment puis-je le réparer alors? J'efface tout l'arrière-plan dans photoshop? Il semble que Java gère l'image différemment. –

+0

Utilisez Fichier/Enregistrer pour le Web pour enregistrer le fichier PNG avec transparence. – msell

+0

Je suis. Exactement ça. –

1

Vous pouvez essayer avec le format GIF et définir la valeur alpha en conséquence. Je ne pouvais pas voir votre image pour le moment. Eh bien, assurez-vous que l'image que vous créez est transparente. Sinon, vous ne l'obtiendriez pas comme vous le souhaitez.

guide exemple pour faire image transparente: LINK

+0

Cela n'a pas fonctionné non plus. Je sais que ça doit être un PNG. (J'ai lu auparavant que Java transparenc ne fonctionne qu'avec PNG.) –

+0

hey .... Je pense que j'ai rencontré la même chose ici. une fois mon png montré OK d'abord, mais quand je le repeins, il me donne un fond noir aussi .... alors alors, comment résoudre ce problème? :( – gumuruh