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 :

Problème de transparence avec un JDialog


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut Problème de transparence avec un JDialog
    Bonjour,

    J'ai une classe qui étend un JPanel, que j'utilise pour afficher un panneau déroulant gràace à un HTMLPane dans un ScollPane.
    Lorsque j'ajoute un objet de cette classe dans n'importe quel conteneur, j'ai le panneau transparent de telle manière que le contenu défile sans masquer le fond du conteneur parent.
    Toutefois, lorsque j'ajoute cet objet à un JDialog, le panneau défile sur un fond gris, dont je ne comprends pas la raison.
    D'avance merci

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Comment tu ajoutes le panel au JDialog ?
    Quel résultat tu voudrais avoir exactement ?

    a++

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Bonjour Maître,

    J'aimerai avoir le même rendu que lorsque j'ajoute ce composant dans d'autres conteneur, c'est à dire un panneau coulissant sans fond, qui affiche déroule le texte sur le fond du JDialog, lui-même recouvert d'un dégradé de couleurs.
    lorsque ce JPanel est ajouté à un JDialog, les texte HTML défile sur un fond gris pourri.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu as définis un ContentPane sur ton JDialog ? C'est lui qui contiendra tes composants.

    A moins que tu ne veuilles avoir un JDialog transparent (uniquement possible depuis Java 6 update 10).

    a++

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    classe principale du dialog:
    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
    21
    22
    23
    24
    25
     
    public class About extends JFrame
    {
        public About(Frame owner) {
          AboutBox dlg = new AboutBox(owner);
          dlg.setSize(420, 240);
          String sAutors = "<html><body><p style='font-familly: verdana; font-size: 14pt; color: #0064C8;'>";
          for(int z=0; z<DrawLAF.AUTHORS.length;z++)
            {
              if(z>0)sAutors += "<br>";
              sAutors += "&nbsp;" + DrawLAF.AUTHORS[z] ;
            }  
          sAutors += "</p></body></html>";
          ScrollPanel sp = new ScrollPanel(100,30,80,70,310,80) ;
          sp.setBorderPanel("loweredbevel",Color.black,1);
          sp.setPanelColor(DrawLAF.Current_Color_Light);
          sp.setContent(sAutors);
          sp.setLocation(80,70);
          sp.setSize(new Dimension(310,80));
          sp.startTimer();      
          sp.setPanelOpaque(false);
          dlg.add(sp);
          dlg.setVisible(true);      
        }
    }
    classe du dialogue:
    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
    21
    22
     
    class AboutBox extends JDialog {
        private URL            m_codeBase;
        private Image  img ;
        private String sJversion =  "JVM version " + System.getProperty("java.version") ;
        private String sBy = "by " + System.getProperty("java.vendor");
        public AboutBox(Frame owner) {
            super(owner, "About Forms' LAF", true); 
            ImageIcon im = new ImageIcon (getClass().getResource("/target-64.gif"));
            img = im.getImage() ;
            this.getContentPane().setLayout(null);
            WindowListener wl = new WindowAdapter() {
              public void windowClosed(WindowEvent e) {
                dispose();
              }          
            };
            addWindowListener(wl);
            pack();
            setResizable(false);
            setLocationRelativeTo(owner);
        }
        ...
    La classe ScrollPanel est définie comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class ScrollPanel extends JPanel implements ActionListener, HyperlinkListener
    {
     ..
    }

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Pourquoi AboutBox étend-t-il JFrame ?
    Pourquoi tu positionnes ton ScrollPanel manuellement ?
    Enfin tu ne définis pas de ContentPane sur ton JDialog. Donc tu utilises le contentPane par défaut (avec un fond gris)

    a++

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Pourquoi AboutBox étend-t-il JFrame ?
    Je ne me souviens plus... c'est gênant ?

    Pourquoi tu positionnes ton ScrollPanel manuellement ?
    Car je n'utilise pas de layout...

    Enfin tu ne définis pas de ContentPane sur ton JDialog. Donc tu utilises le contentPane par défaut (avec un fond gris)
    Coment faire alors ? peut-on uiliser setOpaque sur un contentPane ?

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Pourquoi AboutBox étend-t-il JFrame ?
    Je ne me souviens plus... c'est gênant ?
    Non... mais ca n'a rien à faire là...

    Citation Envoyé par SheikYerbouti Voir le message
    Enfin tu ne définis pas de ContentPane sur ton JDialog. Donc tu utilises le contentPane par défaut (avec un fond gris)
    Coment faire alors ? peut-on uiliser setOpaque sur un contentPane ?
    Ben si tu n'en définis pas tu as le contentPane par défaut avec un fond gris...

    Tu veux quoi exactement ? Avoir une image de fond sur ton JDialog ou avoir une JDialog transparente ?

    a++

  9. #9
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ma classe ScrollPanel est un JPanel qui affiche un HtmlPane dans un ScrollPane.
    Le but est de faire dérouler un texte HTML. Cette classe est utilisée dans d'autres endroits de l'appli, style panneau band annonce.
    Lorsque j'ajoute le ScrollPanel sur un container autre que JDialog ou JFrame, et que je rend transparent tous les composants de la classe ScrollPanel transparent, j'obtiens le résultat souhaité, c'est à dire un texte HTML qui défile sur le fond non caché du conteneur parent.
    Lorsque j'ajoute un objet de cette classe dans un objet qui etend JDIalog, le texte défile sur un fond gris, qui cache donc la partie du JDialog recouverte.
    Je ne sais pas comment expliquer d'avantage....

  10. #10
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    c'est à dire un texte HTML qui défile sur le fond non caché du conteneur parent.
    Ici aussi tu as le même résultat, sauf que par défaut le fond non-caché est gris...

    Je veux dire : si tu met un objet transparent sur un fond gris, tu auras un fond gris...


    Tu voudrais avoir quoi comme fond ???

    a++

  11. #11
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Le fond du conteneur parent...
    Mais je ne pense pas que le problème vienne du parent (en l'occurence le JDialog) car la surface grise affichée dans ce cas correspond à la taille exacte du ScrollPane défini dans la classe ScrollPanel.
    Lorsque je veux rendre le fond d'un objet de la classe ScrollPanel, je mets tous ses composants (this, HtmlPane et JScrollPane) à setOpaque(false).
    Encore une fois, le rendu est parfait si j'ajoute un objet de la classe ScrollPanel à tous conteneur autre que JFrame et/ou JDialog.

  12. #12
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    Le fond du conteneur parent...
    Ben le fond d'un JDialog est gris.


    Désolé mais je n'arrive pas à comprendre ton problème...

    a++

  13. #13
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ok alors l'objet de la classe ScollPanel fait un carré de 100*100 pixels.
    Lorsque je l'ajoute à un composant lambda qui a un fond bleu, le contenu HTML du ScrollPanel défile avec le texte sur le fameux fond bleu.

    Lorsque j'ajoute l'objet (exactement le même) à un JDialog qui a un fond bleu, le contenu HTML du ScrollPanel défile avec le texte sur un carré gris de 100*100 correspondant à la taille du HtmlPane.

    Si besoin, je peux joindre des screenshots...

Discussions similaires

  1. Problème de transparence avec OpenGL
    Par yann458 dans le forum OpenGL
    Réponses: 15
    Dernier message: 16/12/2011, 08h43
  2. [ImageMagick] Transparence avec imagecopyresampled()
    Par kryogen dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/11/2007, 19h46
  3. Problème de Transparence avec SGE
    Par Clément76 dans le forum SDL
    Réponses: 1
    Dernier message: 28/07/2006, 16h16
  4. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  5. Réponses: 5
    Dernier message: 18/03/2005, 20h10

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