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 :

[UI Raccouris clavier] Définition de shortcuts


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2003
    Messages : 28
    Par défaut [UI Raccouris clavier] Définition de shortcuts
    Bonjour à tous,

    Voilà, ça fait un ptit moment que je m'enlise devant un problème.

    Je travaille actuellement sur une application graphique avec énormément de composants, des panneaux dans tous les sens, etc. J'aimerai (en fait, on m'a pas vraiment demandé mon avis) fournir aux utilisateurs des raccourcies clavier permettant d'effectuer des actions quelconques (F1, F2, F9, ESCAPE).

    Au niveau de mon panel le plus haut (le dernier avant ma JFrame), j'ai donc fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F2"),
                "next");
            getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F1"),
                "previous");
            getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("F9"),
                "validate");
            getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (KeyStroke.getKeyStroke ("ESCAPE"),
                "cancel");
     
            getActionMap ().put ("next", action1);
            getActionMap ().put ("previous", action2);
            getActionMap ().put ("validate", action3);
            getActionMap ().put ("cancel", action4);
    Donc, théoriquement, ca passe et c'est d'ailleurs le cas dans une majorité des cas. Néanmoins, il arrive que cela ne marche pas. En regardant l'élément qui a le focus quand cela ne marche pas, j'ai vu qu'il s'agissait tantôt d'un JScrollPane, tantôt d'un javax.swing.plaf.metal.MetalComboBoxEditor$1, etc.

    Bref, je me dis que ces élément doivent peut-être eux-même (ou un de leurs parents) redéfinir ces raccourcis, ret donc, c'est le comportement par défaut qui passe et le mien passe à la trappe.

    Donc, ma question est la suivante (en fait, plusieurs questions) :

    Est-ce que j'utilise la bonne méthode ?

    Si oui, comment remédier à ce problème ? (Dois-je matter tous les composants de mon appli de dégager un par un les comportements par défaut sur F2, F1, etc.. ?)

    Si non, quel est la bonne méthode ?

    A noté que mon application ne comporte pas de menu, donc adios les mnemonic et autres accelerateurs.

    Voilà

    Encore merci pour le temps passé à lire mon problème.


  2. #2
    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
    Tu utilises la bonne methode. Essaye JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2003
    Messages : 28
    Par défaut
    Merci pour ta réponse.

    J'ai essayé mais toujours le même comportement.

    Il semble que le problème vient du fait que certains composants définissent déjà les raccourcis que j'utilise dans l'application complète (F2 dans une JTable pour passer en mode édition sur une cellule éditable est défini en WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).

    Pour corriger mon problème, je pense que je vais devoir :

    - m'assurer que tous les composants contenus dans ma fenêtre ne définissent pas déjà les raccourcis. Si tel tel n'est pas le cas, alors, pour chacun, je vais devoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    composantWithKey.getInputMap (0).put (monKeyStroke, "none");
    composantWithKey.getInputMap (1).put (monKeyStroke, "none");
    composantWithKey.getInputMap (2).put (monKeyStroke, "none");
     
    // j'ai mis 0, 1, 2, mais c'est JComponent.WHEN...
    - au pire, éviter que des composants puissent prendre le focus lors des cycle de focus (Traversal) par setFocusable (false). Le problème est que si le composant en question appartient à un formulaire, je perd l'interêt de la tabulation pour le remplissage rapide.



    Qu'en pense-tu ?

    Merci

  4. #4
    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
    J'en pense que tu devrais choisir d'autres raccourcis claviers

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2003
    Messages : 28
    Par défaut
    lol

    L'histoire, c'est qu'à terme, l'utilisateur peut changer ses raccourcis clavier.

    Donc, je serais quoi qu'il arrive amené à être dans la merde là.

    Bon, je continu à chercher.

    Si quelqu'un a une piste...

Discussions similaires

  1. [Débutant] Rentrer un shortcut clavier en variable
    Par titone971 dans le forum MATLAB
    Réponses: 0
    Dernier message: 30/11/2010, 13h53
  2. définition pour faire agir une touche du clavier
    Par regimari dans le forum wxPython
    Réponses: 6
    Dernier message: 03/06/2008, 20h24
  3. Définition de "Métalangage"
    Par No dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 19/07/2002, 14h05
  4. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

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