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

2D Java Discussion :

[swing] Problème de superposition


Sujet :

2D Java

  1. #1
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut [swing] Problème de superposition
    Bonjour,
    J'ai un problème, lorsque j'ajoute un JPanel A avec un alpha de 50 dans un JPanel B, puis si je remplace le JPanel A en ajoutant un JPanel C dans le JPanel B avec un alpha de 80 et de taille inférieur, on remarque en fond que le JPanel A n'as pas disparus...
    De plus, si je place un JPanel avec un alpha de 50 dans un JScollPane. et si le JPanel fait apparaitre le scroll du JScrollPane alors au moment du déplacement du scroll on remarque qu'un fond de couleur gris apparait sous le JPanel.
    Quelqu'un saurai d'ou viendrait ces problemes ?

    Merci de votre aide.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Peux-tu nous faire un mini-programme en un fichier source exécutable qui compile et qui montre les problèmes que tu décris que l'on puisse voir ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Et as-tu également pensé à faire setOpaque(false) sur tous les composents qui s'imposent ?
    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
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par bouye Voir le message
    Et as-tu également pensé à faire setOpaque(false) sur tous les composents qui s'imposent ?
    Non je n'y ai pas pensé car normalement par default la valeur est a false.
    De plus mes JPanel sont bien transparent, c'est le JPanel affiché juste avant qui ne veut pas disparaitre.

    Pour le programme je m'en occupe, je doit absolument terminé un module de mon prog avant d'oublier l'algo.

    merci

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Normalement non. Par défaut isOpaque() est à false sur la classe de base JComponent mais est à true sur JPanel. Et mettre une couleur de fond transparente sans changer correctement cette propriété peut provoquer des bugs graphiques à cause des optimisations de rendu de Swing.
    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
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Enfaite en faisant le programme test, j ai remarqué qu'il faut faire un repaint(): pas du JPanel qui va contenir l'element mais du conteneur de celui si ...

    Parcontre, et sa je n'arrive pas a créer un programme test car je ne voit pas d'ou vient le problème, mais lorsque je met un contenu transparent dans un JscrollPane, tous les Conteneurs étant alpha<255, alors en utilisant un des scrolls on voit apparaitre un fond d'ecran de couleur gris sous le contenu du JScrollPane....

  7. #7
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    c'est quoi la version du du JRE avec lequel tu travaille ?

  8. #8
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    J'utilise la 6.
    Ce qui est surprenant enfaite c est que dans mon application je voit apparaitre ce fameux fond gris lors du scroll mais lorsque je veut faire une application test, au moment du scroll l'affichage n'étant pas repaint(), cela donne des trainés noir...

  9. #9
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par RhO Voir le message
    J'utilise la 6.
    Ce qui est surprenant enfaite c est que dans mon application je voit apparaitre ce fameux fond gris lors du scroll mais lorsque je veut faire une application test, au moment du scroll l'affichage n'étant pas repaint(), cela donne des trainés noir...
    j'imagine ton problème .
    pour la 6 sa diffère aussi ,il ya différent update (maintenant update 14 je pense) est j'ai remarqué qu'il ya une différence ,car j'avais une application avec une scéne 3D ,ou j'ajoutais des form3D au fur et a mesure en cliquant ,et j'ai remarqué qui 'il avait un clignotant de la scène ; qui a était disparu en changeant la version.
    essaie pour le moment d'utiliser paint(tonpanneau.getGraphics()) ou tonpanneau.update(ton_panno.getGraphics()) au lieu d'un repaint() explicite s'il on a.
    le problème provient de la transparence de ton panneau . n'hésite pas à le mettre non opaque

  10. #10
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par slim_java Voir le message
    j'imagine ton problème .
    pour la 6 sa diffère aussi ,il ya différent update (maintenant update 14 je pense) est j'ai remarqué qu'il ya une différence ,car j'avais une application avec une scéne 3D ,ou j'ajoutais des form3D au fur et a mesure en cliquant ,et j'ai remarqué qui 'il avait un clignotant de la scène ; qui a était disparu en changeant la version.
    essaie pour le moment d'utiliser paint(tonpanneau.getGraphics()) ou tonpanneau.update(ton_panno.getGraphics()) au lieu d'un repaint() explicite s'il on a.
    le problème provient de la transparence de ton panneau . n'hésite pas à le mettre non opaque
    tu veut dire setOpaque(true) ? car en false, la transparence n'existe pas.
    Pour l'instant j'ai supprimé tous ce qui était transparence, je trouve sa moins bien mais en attendant de finir les fonctionnalité je laisse tel quel (j'ai passé trop de temps a essayer de corriger ce problème). Je reviendrai s dessus ensuite sinon j'avancerai pas. Je garde en tête tous vos conseil.

    Merci

    Pour ton probleme d'ajout de scene 3D, il ne s'agit pas d'un problème de buffer/doubleBuffer ?

  11. #11
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par RhO Voir le message
    tu veut dire setOpaque(true) ?
    au contraire ,je veut dire setOpaque(false) .



    Citation Envoyé par RhO Voir le message
    car en false, la transparence n'existe pas
    tu peut nous dire comment tu définie une couleur en RGBA ?

    Citation Envoyé par RhO Voir le message
    Pour ton probleme d'ajout de scene 3D, il ne s'agit pas d'un problème de buffer/doubleBuffer ?
    non ,car d'après mes connaissence ,java3D gère une double buffer d'affichage .
    en fait ,je parle pas des problèmes de scintillements de l'image (clipping) car j'ai pas une animation

  12. #12
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par slim_java Voir le message
    tu peut nous dire comment tu définie une couleur en RGBA ?
    Simplement par : Color color = new Color(10,10,10,40);
    Donc l'alpha est égal a 40...

  13. #13
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par RhO Voir le message
    tu veut dire setOpaque(true) ? car en false, la transparence n'existe pas.
    c'est en contradiction avec ce que tu dis

  14. #14
    RhO
    RhO est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Heu non justement,
    Pour l'instant j'ai laissé mes JPanel en non transparent car j'ai des problème de transparence.
    Si je met setOpaque a true alors mes JPanel peuvent être transparent en False ils ne le seront pas.

  15. #15
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut


    écoute on ta déjà dis comment faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    JPanel RhO_pan = new JPanel ()
    /*
    .... gestion layout et addition a ton frame
    */
    RhO_pan.setOpaque(false);
    RhO_pan.setBackground(new Color(10,10,10,40))
    mais l'effet de transparence n'est pas visible car ton panneau et "accroché" a ton JFrame qui est opaque.

    bonne chance

  16. #16
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par slim_java Voir le message
    j'imagine ton problème .
    pour la 6 sa diffère aussi ,il ya différent update (maintenant update 14 je pense)
    _15 sortie il y a peu.

    La transparence des fenetres a ete rajoutee via une API Sun (AWTUtilities) dans la _10 ou _9. Une partie des changements dans les releases recentes concernent des supports d'acceleration et d'effets graphiques avances pour Java2D et JavaFX.
    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

  17. #17
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par bouye Voir le message
    _15 sortie il y a peu.

    La transparence des fenetres a ete rajoutee via une API Sun (AWTUtilities) dans la _10 ou _9. Une partie des changements dans les releases recentes concernent des supports d'acceleration et d'effets graphiques avances pour Java2D et JavaFX.

    merci pour l'information.j'ai tester une de mes applications dés que j'ai recu ton message ,mais le problème c'est que seulement quand j'enléve " la décoration " de la fenêtre que sa marche .
    apparemment cela n'est pas supporté sur mon OS MS vista

    par contre ,pour la JDK ,je vois un update 16 sur le site de sun

  18. #18
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    ça va j'ai résolu le problème .

    je vois que tous les composant (JPanel.....) contenu sont transparents.
    est ce qu'on peut contrôler cela de telle façon à " empêcher " tel ou tel composant contenu dans la Frame d'être non opaque voir transparent ?

  19. #19
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Deja ? Dire que je n'ai meme pas encore telecharge la 15...

    Certaines transformations telle que le fait de mettre une forme sur la fenetre ne fonctionnent en effet que si cette derniere n'est pas decoree.

    Comment avoir un JButton tout seul dans le vide :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    package test;
     
    import com.sun.awt.AWTUtilities;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
     
    /**
     *
     * @author Fabrice Bouyé (fabriceb@spc.int)
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    final JFrame frame = new JFrame("Test AWT Utilities");
                    JButton button = new JButton("Click me!");
                    button.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent event) {
                            frame.dispose();
                        }
                    });
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setUndecorated(true);
                    JPanel contentPane = new JPanel();
                    contentPane.setBackground(new Color(0, 0, 0, 0));
                    contentPane.setOpaque(false);
                    frame.setContentPane(contentPane);
                    frame.add(button);
                    frame.setSize(500, 500);
                    AWTUtilities.setWindowOpaque(frame, false);
                    frame.setVisible(true);
                }
            });
        }
    }
    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

  20. #20
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    je suppose que ma question n'était pas clair .ce que je veut savoir pour ma nouvelle découverte ( AWTUtilities ) ; est est 'il possible de rendre un panno par exemple Opaque malgré que la fenêtre ne l'ai pas ?

Discussions similaires

  1. Swing et GLCanvas problème de superposition
    Par Clilmbatize dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 23/05/2007, 09h29
  2. Problème de superposition de fenetre
    Par Raton dans le forum MFC
    Réponses: 14
    Dernier message: 28/07/2005, 20h57
  3. [Swing] Problème avec un bean et un arraylist
    Par kikoufr dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 30/09/2004, 09h08
  4. [Swing] problème d'affichage
    Par l'obstiné dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/08/2004, 18h05
  5. [SWING] Problème de rafraichissement
    Par david71 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/05/2004, 15h38

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