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 :

Fenêtre toute transparente


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut Fenêtre toute transparente
    Bonjour tout le monde,
    J'ai réalisé une fenêtre transparente grâce à la dernière version du jdk (6.6.0_10) proposée par java. Je vois très bien mon arrière plan à travers ma fenêtre.
    Cependant, toute la fenêtre est transparente, c'est esthétique mais je souhaite uniquement avoir l'intérieure de ma fenêtre transparente et non la barre de titre également. J'ai beau réfléchir à comment faire, je ne vois pas de solution, est-ce que quelqu'un aurait une idée ? ou à réussi à réaliser ceci ?

    (P.S : Je vous met un petit screenshot pour que vous compreniez bien ce que je demande.)

    Merci d'avance!
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    peux tu poster ton code pour que l'on voit si on peut remédier à ton pb ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Bonsoir, je crée une JFrame normale et dans mon constructeur, je met la fonction suivante :

    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
    18
    19
    20
     
    public void setConfig(){
            translucencyCapableGC = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
            if (!AWTUtilities.isTranslucencyCapable(translucencyCapableGC)) {
                translucencyCapableGC = null;
     
                GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
                GraphicsDevice[] devices = env.getScreenDevices();
     
                for (int i = 0; i < devices.length && translucencyCapableGC == null; i++) {
                    GraphicsConfiguration[] configs = devices[i].getConfigurations();
                    for (int j = 0; j < configs.length && translucencyCapableGC == null; j++) {
                        if (AWTUtilities.isTranslucencyCapable(configs[j])) {
                            translucencyCapableGC = configs[j];
                        }
                    }
                }
            }
            AWTUtilities.setWindowOpacity(this, 0.75f); // this étant ma fenêtre donc et 0.75f l'opacité de celle-ci.
    }
    Sinon, je crée un objet frame dans mon main, et la classe de ma Frame est tout à fait normale.
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    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 905
    Billets dans le blog
    54
    Par défaut
    Normalement tu peux specifier un autre type de transparence qui utilise un masque (c'est ce qui permet de faire des fenetres non rectangulaires). Tu peux donc essayer de faire un masque opaque sur les parties du cadre et semi-transparent a l'interieur. Par contre il va falloir gerer les redimensionnements ...
    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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Peux tu me donner un peu plus d'indications bouye s'il te plait. Ce serait cool.
    Je sais faire un masque opaque mais sur toute la fenêtre avec la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AWTUtilities.setWindowOpaque(this, false);
    Cela supprime la barre de titre. Comment faire pour garder la barre de titre en la rendant opaque sans affecter la transparence à l'intérieur ?

    Le problème, c'est que dans la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AWTUtilities.setWindowOpacity(this, 0.75f);
    On ne peut passer en premier argument qu'un java.awt.Window et non autre chose ...

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    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 905
    Billets dans le blog
    54
    Par défaut
    Hum, j'ai un peu mixee les deux types de transparence.

    Je pensais a la Figure10 qui est visible dans l'article How to Create Translucent and Shaped Windows mais en fait c'est la figure 6 qui correspond a ce a quoi je pense.
    Il s'agit d'utiliser l'utilisation de Translucency.PERPIXEL_TRANSLUCENT plutot que de Translucency.TRANSLUCENT (meme niveau de transparence sur toute la fenetre) ou Translucency.PERPIXEL_TRANSPARENT (donner une taille arbitraire a la fenetre).

    Evidement ici, dans l'exemple, le masque est un gradient simple en diagonial mais il faut voir si on peut passer un masque arbitraire qui soit completement blanc sur les partie ou se trouvent les decorations et gris a l'interieur de la fenetre.

    Des solutions sont donnees dans l'article concernant le redimensionement il me semble.

    EDIT - Ah oui.... les decorations... zut. J'avais pas fait gaffe qu'elles etaient supprimees.
    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

  7. #7
    Invité de passage
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Par défaut
    Citation Envoyé par womannosky Voir le message
    Bonjour tout le monde,
    J'ai réalisé une fenêtre transparente grâce à la dernière version du jdk (6.6.0_10) proposée par java. Je vois très bien mon arrière plan à travers ma fenêtre.
    Cependant, toute la fenêtre est transparente, c'est esthétique mais je souhaite uniquement avoir l'intérieure de ma fenêtre transparente et non la barre de titre également. J'ai beau réfléchir à comment faire, je ne vois pas de solution, est-ce que quelqu'un aurait une idée ? ou à réussi à réaliser ceci ?

    (P.S : Je vous met un petit screenshot pour que vous compreniez bien ce que je demande.)

    Merci d'avance!
    monFrame.setUndecorated(true);//enlève le cadre du fenêtre

Discussions similaires

  1. Fenêtre transparente
    Par c-top dans le forum Agents de placement/Fenêtres
    Réponses: 16
    Dernier message: 10/10/2013, 12h33
  2. Réponses: 5
    Dernier message: 28/02/2012, 19h39
  3. Faire se fermer une fenêtre toute seule, ça ne marche plus
    Par guidav dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/01/2007, 16h35
  4. Réponses: 1
    Dernier message: 16/02/2005, 12h04
  5. Fenêtre alert(""); se mette devant toute les appli
    Par Bweb dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 11h04

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