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

Composants Java Discussion :

JPopupMenu et focus


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut JPopupMenu et focus
    Bonjour à tous,

    Je cherche à mieux comprendre la gestion semble-t-il particulière du focus avec les JPopupMenu. De manière classique, le focus est donné au JPopupMenu lors de l'appel à show. Dans mon cas, mon JPopupMenu est non focusable, donc le focus reste dans le composant d'origine, c'est exactement ce que je veux. Mais je voudrais sur certaine action rendre le focus au JPopupMenu, et là je ne sais pas comment faire. J'ai bien essayé de rendre le JPopupMenu focusable puis de faire un requestFocus. Mais cela ne donne pas le résultat souhaité, le popup prend bien le focus mais je ne peut pas naviguer dedans avec les flèches directionnelles.

    Il semblerait que le focus marche différemment avec les menus, d'après ce que je vois, normalement, c'est le root pane qui acquiert le focus de manière temporaire. J'ai essayé de reproduire ce fonctionnement, mais ça ne marche pas non plus, même résultat. Quelqu'un a-t-il une idée sur la bonne manière de réaliser cela ?

    Autre chose, j'ai remarqué une différence de comportement entre la version de Java que j'utilisais (1.6.0_07) et la dernière (1.6.0_18). Avant, le premier item étais toujours sélectionné, maintenant il ne l'est plus (il faut utiliser les flèches pour le sélectionner). Y-a-t-il un moyen de privilégier un type de comportement par rapport à l'autre ? Dans certains cas, je voudrais l'un et dans d'autres l'inverse... Je précise que l'utilisation de setSelected semble ne rien changer...

    Merci pour votre aide,

    Fred.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Et un ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par sinok Voir le message
    Et un ?
    Si c'est pour le deuxième problème, non ça ne change rien. Que le popup soit focusable ou pas, le comportement est identique dans les deux versions JRE (sélectionné avec l'ancienne et non-sélectionné avec la nouvelle).

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par kwxyz Voir le message
    Autre chose, j'ai remarqué une différence de comportement entre la version de Java que j'utilisais (1.6.0_07) et la dernière (1.6.0_18). Avant, le premier item étais toujours sélectionné, maintenant il ne l'est plus (il faut utiliser les flèches pour le sélectionner). Y-a-t-il un moyen de privilégier un type de comportement par rapport à l'autre ? Dans certains cas, je voudrais l'un et dans d'autres l'inverse... Je précise que l'utilisation de setSelected semble ne rien changer...
    J'ai réussi à reproduire l'ancien comportement en changeant le path du popup avec la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MenuSelectionManager.defaultManager().setSelectedPath(...);
    Ça marche bien, mais dans la doc, ils disent que normalement je ne devrait pas l'appeler...
    En revanche, pour faire l'inverse (avec l'ancienne version, obtenir le comportement de la nouvelle) ça marche moins bien : je n'ai plus d'item sélectionné (ça c'est bien), mais les flèches directionnelles ne fonctionnent plus !
    Et si j'utilise clearSelectedPath(), ça ferme le popup !

    Peut-être que si je résous le premier problème, je trouverais pour celui-ci, l'espoir fait vivre

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    J'ai finalement réussi à redonner le focus au popup en combinant le setSelectedPath avec un requestFocus au JMenuItem désiré en ayant pris la peine de le rendre focusable avant, car les JMenuItems ne sont pas focusable par défaut. Ça marche, mais je pense que ce n'est pas la bonne solution...

    De toute façon, j'ai réalisé qu'il était plus simple, pour ce que je voulais faire, de ne pas rendre le focus au popup, donc problème résolu

    Merci à tous ceux qui se sont penché sur mon problème.

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

Discussions similaires

  1. Passer le focus JDialog vers JPopupMenu
    Par arnaud.tlse dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 23/04/2008, 13h38
  2. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  3. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. focus en C
    Par killpilot dans le forum C
    Réponses: 8
    Dernier message: 19/04/2002, 19h19

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