IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

[SWING] JFrame fond transparent


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Par défaut [SWING] JFrame fond transparent
    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é:
    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);
    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)

    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.

  2. #2
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Dans la faq java sur dvp.com il y a une exemple pour rendre un JButton transparent ..
    Peut etre qu'en le modifiant pour ton cas a toi, cela fonctionera?
    http://java.developpez.com/faq/java/...tonTransparent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Par défaut
    Non car j'arrive sans probléme à rendre mes boutons transparents. Même par dessus mon fond d'écran.

    Mais merci quand même.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Malheureusement une JFrame n'est absolument pas prévue pour être transparente, et la seule parade possible est l'utilisation de Robot pour faire des captures d'écrans ou de se lancer dans l'utilisation de JNI et de faire des appels système

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Le code natif n'est pas très dur mais sous Windows il faut désactiver le pipeline de rendu DirectDraw. Nous (Scott Violet, Shannon Hickey et moi-même, de l'équipe Swing) allons bientôt diffuser le code source de la démo "Extreme GUI Makeover" que nous avions présenté à JavaOne 2005. Cette démo utilise la transparence pour faire des fondus entre les fenêtres. Ce n'est pas exactement ce que tu cherches mais ça te donnera une bonne piste. Tu peux aussi regarder du côté de SkinLF de Frédéric Lavigne qui contient du code pour Windows qui permet de faire ce type de fenêtre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 68
    Par défaut
    Merci à vous, je vais donc chercher du côté des skin de lavigne!!!

    En attendant si quelq'un d'autre à une idée je suis preneur

Discussions similaires

  1. [SWING][GlassPane] comment rendre un fond transparent ?
    Par PoPeio dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/04/2006, 01h55
  2. [Swing]JTextField + fond transparent
    Par LordBlaize dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/02/2006, 20h17
  3. Rendre le fond transparent dans une picturebox
    Par fun31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/01/2005, 18h17
  4. Image GIF a fond transparent dans un formulaire ?
    Par Coquelicot dans le forum IHM
    Réponses: 4
    Dernier message: 25/10/2004, 12h08
  5. [JButton] avec un fond transparent
    Par Tiercel dans le forum Composants
    Réponses: 6
    Dernier message: 23/09/2004, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo