Je sais qu'a la lecture du titre certains ont du crier car l'explication à été donné à de nombreuses reprises, mais malgré cela je n'y arrive toujours pas, j'ai beau avoir parcouru une bonne 30aine de messages expliquant comment faire, mais cela ne veut pas fonctionner chez moi.
Voilà la situation:
J'ai une JFrame, qui posséde un Jpanel n°1, qui lui meme posséde un JPanel n°2 avec une image de fond intégré, ce qui donne ceci:Le rouge c'est le Jpanel n°1 posé sur la JFrame, et l'image est elle même posé sur un l'autre JPanel n°2, l'image est un png, avec les bords transparents.
J'essaye alors d'après les indications que j'ai pu trouver de rendre ce JPanel n°1 transparent ce qui donne ceci:Comme on peut le voir, le JPanel n°1 n'est en rien transparent car il conserve une couleur jaunatre que je n'arrive pas à enlever.
Voici donc mon code abrégé:
Comme on peut le voir je définit bien une couleur de de type 0,0,0,0 ainsi qu'un setopaque a false, j'ai d'ailleurs aussi essayé de définir en plus mon panel_1 avec les même caractéristique, malheureusement rien n'y fait. je ne sait vraiment pas d'ou ca vient. (la méthode loadimage comme son nom l'indique charge une image, et la classe Fond_Ecran redéfinit la méthode paint du JPanel avec cette image)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Image img = loadImages(this, "res/fond.png"); JPanel panel_1; Container defaut; JPanel fond_transparent=new JPanel(); panel_1 = new Fond_Ecran(img); panel_1.setLocation(300, 150); panel_1.setMinimumSize(new Dimension(300, 400)); panel_1.setMaximumSize(new Dimension(300, 400)); panel_1.setPreferredSize(new Dimension(300, 400)); panel_1.setLayout(new GridBagLayout());<div style="margin-left:40px">defaut = getContentPane();</div>fond_transparent.setBackground(new Color(0,0,0,0)); fond_transparent.setOpaque(false); fond_transparent.add(panel_1); defaut.add(fond_transparent, BorderLayout.CENTER); this.setVisible(true);
J'ai trouvé une parade, en faisant une capture dufond d'écran, mais cela est vraiment trop lourd, dès que je réalise un déplacement ou un rafraichissement mon programme ralentie!!
Auriez vous une solution, qui ne comporte pas le fait d'ajouter des librairies suplémentaire tel que des JXPanel ou autre.
Merci d'avance,
En espérant que quelqu'un saura m'aider.
Cheval.









Répondre avec citation








Partager