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 :

Transparence sur une JFrame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Par défaut Transparence sur une JFrame
    Bonjour,

    Je cherche à faire une barre de bouton qui donne l'impression d'être flottant.

    Pour cela, j'aurais besoin de rendre la JFrame sur laquelle ils sont posés transparente (il y a un petit espace entre chaque bouton).

    Quelqu'un a-t'il déjà rencontré ce problème et surtout, trouvé la solution?
    J'ai bien essayé avec la méthode setOpaque, mais cela ne donne rien.

    Merci d'avance


  2. #2
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Faut utiliser le AlphaComposite et redefinir la méthode paint.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Override public void paint(Graphics g)
    {        
            Graphics2D g2 = (Graphics2D)g;
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5));            
            super.paint(g);
        // Apres je crois qu'il faut faire un g2.dispose(); mais j'ai un doute, à tester    
        }
    Par contre je sais pas pourquoi mais autant sous XP ca marche au poil, autant sous mon vista, çà ne marche pas, allez savoir pourquoi

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Jouer sur l'AlphaComposite permet de faire des effets de transparence, mais à l'intérieur de la fenêtre seulement.

    Il n'y a rien pour rendre une fenêtre transparente de manière standard... c'est trop dépendant du système d'exploitation.

    Toutefois depuis Java 6 update 10 une classe non-standard a été intégré pour gérer cela : com.sun.awt.AWTUtilities (elle devrait logiquement être standardisée pour Java 7).

    Maintenant il y a plusieurs façons de faire donc cela dépend de ce que tu veux faire précisément.


    a++

    PS : Je prépare un billet blog sur ce sujet. Je ne sais pas quand il sera fini, mais si ca te dit surveille mon blog : http://blog.developpez.com/adiguba

  4. #4
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    C'est pour cà que ca ne marche pas sous vista, par contre étonnant que cà marche sous XP.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Tu veux dire qu'avec l'AlphaComposite tu arrive à faire une fenêtre réellement transparente ?

    Quel version de Java tu utilises ? Et à quoi ressemble le code complet ???

    a++

  6. #6
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Alors : version de Java jdk1.6.0_03
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /**
         * Surcharge de la méthode pain pour gérer la transparence
         * @param g
         */
        @Override public void paint(Graphics g)
        {        
            Graphics2D g2 = (Graphics2D)g;
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5F));            
            super.paint(g);
     
        }
    Et j'ai un this.setUndecorated(true); dans le constructeur, mais ca change rien je pense.

    Et en prime, l'image !

    Bon par contre cà bug un peu, mais je l'utilise pour un splash screan, donc ca passe bien.
    En fait dès que tu commence à toucher à la fenetre, remplir les champs, etc .. la transparence par peu à peu, mais comme je l'ai dit pour un splach screan, ca marche bien vu qu'à la fin mon alpha est à 1.
    Images attachées Images attachées  

Discussions similaires

  1. [débutant]Afficher une image sur une JFrame
    Par mavina dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/08/2006, 17h25
  2. [AWT] JFrame - Mettre une taille minimum sur une Jframe
    Par rabobsky dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 27/07/2005, 19h20
  3. dégradé transparent sur une image
    Par Dionyzos dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2005, 16h47
  4. [Icon] logo sur une JFrame
    Par ibou2610 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 30/07/2004, 11h45
  5. Réponses: 1
    Dernier message: 23/02/2003, 07h22

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