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 :

Options du menu cachés sous un Panel.


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Par défaut Options du menu cachés sous un Panel.
    Bonjour.
    Voilà donc mon souci. Je crée avec NetBeans une appli de visualisation 3D, dans le cadre de mon stage (je débute donc en developpement et en java). J'ai placé une barre de menu à son endroit habituel. Sous cette barre de menu, un JPanel, lequel contiendra à l'exécution un Canvas3D généré par le code.
    Or celui-ci cache les options une fois que les menus sont déroulés. Je n'ai pas trouvé d'options gérant les profondeurs des éléments, si tant est que que mon problème se trouve là.
    Je pense (j'espère) que c'est tout bête mais j'ai quand même perdu quelques heures dessus.
    Merci pour vos conseils.
    A+

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Franckito
    Bonjour.
    Voilà donc mon souci. Je crée avec NetBeans une appli de visualisation 3D, dans le cadre de mon stage (je débute donc en developpement et en java). J'ai placé une barre de menu à son endroit habituel. Sous cette barre de menu, un JPanel, lequel contiendra à l'exécution un Canvas3D généré par le code.
    Or celui-ci cache les options une fois que les menus sont déroulés. Je n'ai pas trouvé d'options gérant les profondeurs des éléments, si tant est que que mon problème se trouve là.
    Je pense (j'espère) que c'est tout bête mais j'ai quand même perdu quelques heures dessus.
    Merci pour vos conseils.
    A+
    Sur tous tes jmenu, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jmenu.getPopupMenu().setLightWeightPopupEnabled(false);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Par défaut
    Bonjour.
    Merci pour la réponse.
    Cependant, ça ne fonctionne que pour un jmenu sur les trois. J'avais placé les instructions que tu m'avais donné juste après initComponents() dans le constructeur de ma frame. Comme le Canvas3D arrive après cela, je les ai déplacées mais le résultat est toujours le même.
    Celui pour lequel ça marche est un jMenu qui se remplit automatiquement à chaque fois qu'un objet 3D est placé sur le Canvas3D. J'ai pensé que c'était peut-être dû au fait que le Canvas3D était redessiné à chaque fois mais en fait avant qu'il soit redessiné, les deux premiers menus sont toujours cachés...
    Une idée ?
    Merci encore.
    A+

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Franckito
    Bonjour.
    Merci pour la réponse.
    Cependant, ça ne fonctionne que pour un jmenu sur les trois. J'avais placé les instructions que tu m'avais donné juste après initComponents() dans le constructeur de ma frame. Comme le Canvas3D arrive après cela, je les ai déplacées mais le résultat est toujours le même.
    Celui pour lequel ça marche est un jMenu qui se remplit automatiquement à chaque fois qu'un objet 3D est placé sur le Canvas3D. J'ai pensé que c'était peut-être dû au fait que le Canvas3D était redessiné à chaque fois mais en fait avant qu'il soit redessiné, les deux premiers menus sont toujours cachés...
    Une idée ?
    Merci encore.
    A+
    Tu utilises correctement l'EventDispatchThread (règle du Thread unique pour tout ce qui concerne l'affichage graphique)?

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Sur tous tes jmenu, tu fais
    Code:
    jmenu.getPopupMenu().setDefaultLightWeightPopupEnabled(false);
    Non. Il suffit de faire, une seule fois pour toute l'application, l'opération suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JPopupMenu.setDefaultLightWeightPopupEnabled(false);

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Gfx
    Non. Il suffit de faire, une seule fois pour toute l'application, l'opération suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JPopupMenu.setDefaultLightWeightPopupEnabled(false);
    Oui exact, en fait je voulais dire sur chacun des menus faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getPopupMenu().setLightWeightPopupEnabled(false);

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oui mais même, on peut le faire une seule fois C'est une méthode statique. Il faut l'appeler AVANT création des popups cela dit (ce qui explique le bug remarqué par Franckito).

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Gfx
    Oui mais même, on peut le faire une seule fois C'est une méthode statique. Il faut l'appeler AVANT création des popups cela dit (ce qui explique le bug remarqué par Franckito).
    Le setDefaultLightWeightPopupEnabled, c'est statique, mais pas le setLightWeightPopupEnabled...

    Mais certes, si c'est pour appliquer à tous les popups de l'appli, autant faire le setDefaultLightWeightPopupEnabled...

  9. #9
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oops j'avais mal lu. C'est ça de dormir 2h la nuit ^^ Désolé.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Par défaut
    Citation Envoyé par ®om
    Tu utilises correctement l'EventDispatchThread (règle du Thread unique pour tout ce qui concerne l'affichage graphique)?
    Ouhlalala ! Attention ! Je débute vraiment en Java ! Donc pour l'instant je suis sur mon appli 3D qui fonctionne plutôt pas mal mais je ne gère pour l'instant pas de threads séparés, du moins pas intentionellement (si j'ai bien compris la question).
    Dans cette appli, j'ai une classe qui correspond à la GUI, dans laquelle je place presque tous les composants, entre autre le JMenu qui s'appelle MenuMaillage3D .
    Dans ma classe qui crée les maillages3D, j'ai une fonction qui rajoute un élément à ce menu (qui est passé en paramètre du constructeur) et permet de rendre visible ou invisible l'élément correspondant. (Je ne suis pas sûr d'être très clair dans mon explication). Ce qui est étonnant et que je ne comprends pas (entre autres choses... ), c'est que ce sont ces entrées créées dynamiquement qui se trouvent bien sur le dessus et pas les autres créées à l'origine...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JPopupMenu.setDefaultLightWeightPopupEnabled(false);
    Cette ligne ne marche que pour ces dernières entrées.... Je l'ai mise dans la classe du GUI, après initComponants(), toujours...
    Merci pour ces avancées mais visiblement, ça ne convient pas tout à fait...
    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Par défaut
    Citation Envoyé par Gfx
    Oui mais même, on peut le faire une seule fois C'est une méthode statique. Il faut l'appeler AVANT création des popups cela dit (ce qui explique le bug remarqué par Franckito).
    Oooooops !
    AVANT est en majuscule.
    Ca marche !! Je l'ai donc placé avant initComponents() et ça marche ! C'est très cool ! Merci bien !
    A+

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

Discussions similaires

  1. Affichage des composants cachés sous l'effet d'une action d'un menu en Java
    Par nehlaING dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 31/03/2010, 14h06
  2. Menu déroulant caché sous IE
    Par hinomi dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 23/12/2009, 18h40
  3. Menu déroulant caché sous une animation flash
    Par pasc06 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 02/12/2009, 10h09
  4. sous menu caché
    Par belek94 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/07/2008, 14h01
  5. Réponses: 6
    Dernier message: 19/12/2006, 17h16

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