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

AWT/Swing Java Discussion :

Rendre un bouton semi-transparent


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut Rendre un bouton semi-transparent
    Bonjour,

    J'ai crée un bouton semi transparent avec la méthode setBackground() avec de la transparence.
    Mais le problème est que lorsque la souris survol le bouton la couleur "s'intensifie" et au bout de quelques survol il n'y a plus de transparence.

    Comment faire pour supprimer ce problème et aussi je voulais savoir s'il existe un moyen pour rendre transparent (pas de couleur) le bouton lorsque je met SetEnable(false).

    Merci

  2. #2
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Citation Envoyé par devocx Voir le message
    J'ai crée un bouton semi transparent avec la méthode setBackground() avec de la transparence.
    Mais le problème est que lorsque la souris survol le bouton la couleur "s'intensifie" et au bout de quelques survol il n'y a plus de transparence.
    Comment faire pour supprimer ce problème et aussi je voulais savoir s'il existe un moyen pour rendre transparent (pas de couleur) le bouton lorsque je met SetEnable(false).
    Pour créer un bouton semi transparent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    btTest = new JButton("Test") {
        @Override
        protected void paintComponent(final Graphics g) {
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
            super.paintComponent(g);
        }
    };
    btTest.setOpaque(false);
    btTest.setBackground(new Color(255, 0, 0, 100));//ici tu met la couleur et la transparence que tu veux
    Pour rendre transparent (pas de couleur) le bouton lorsque tu met setEnable(false):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    btTest.setEnabled(false);
    btTest.setBackground(new Color(0, 0, 0, 0));//transparence = 0

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    En effet c'est très TRES important de faire setOpaque(false) sinon cela ne fonctionnera pas correctement.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    Merci pour les réponse, mais j'ai toujours le même problème lors du survol de la souris sur le bouton.
    Le bouton devient de moins en moins transparent lors du survol de la souris .

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Ben envoie ton code alors !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Citation Envoyé par devocx Voir le message
    Le bouton devient de moins en moins transparent lors du survol de la souris .
    Lorsque la valeur opaque est "false", le composant ne donne aucune garantie sur la peinture de tous les pixels à l'intérieur de ses limites rectangulaires. Par conséquent, la RepaintManager a besoin de trouver un ancêtre opaque de la composante. Une fois qu'il le fait, il repeint alors l'ancêtre et tous ses enfants pour s'assurer que les limites rectangulaires de la composante sont entièrement repeintes.

    Donc, qu'est-ce qu'il arrive lorsque tu introduis une valeur alpha dans la couleur de fond de la composante? Si la valeur opaque est "false", l'ancêtre et les enfants sont peintes, mais le fond du composant n'est pas peint, de sorte que tu perds l'effet de transparence.

    La solution est de s'assurer que l'ancêtre de la composante est peint avant que l'arrière-plan du composant est peint. Cela se fait en deux étapes:

    1. En premier lieu, le composant est rendu non opaque, en utilisant setOpaque (false)
    2. Ensuite, tu ajoute la peinture personnalisée à l'élément pour peindre son arrière-plan, en substituant la méthode paintComponent() de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    btTest = new JButton("Test") {
        @Override
        protected void paintComponent(final Graphics g) {
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
            super.paintComponent(g);
        }
    };
    S'il te plais, vérifie si tu as bien mis en oeuvre ces deux points.

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Par défaut
    En fait c'est moi qui me suis trompé lors de l'initialisation du bouton.
    Le code marche très bien et encore merci à vous .

    Problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#]Rendre un bouton transparent
    Par krolis dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2010, 03h52
  2. Rendre un pixel semi-transparent
    Par Electroniktor dans le forum OpenCV
    Réponses: 4
    Dernier message: 11/07/2008, 10h23
  3. [swing] Comment rendre le bouton non éditable ... .
    Par issou dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 03/04/2006, 17h54
  4. Réponses: 8
    Dernier message: 01/03/2006, 18h19
  5. [FLASH] Comment créer un bouton à fond transparent ?
    Par langela94 dans le forum Flash
    Réponses: 2
    Dernier message: 20/01/2006, 15h01

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