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

Langage Java Discussion :

[i18n] méthode élégante pour gérer les Keys Accelerator


Sujet :

Langage Java

  1. #1
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut [i18n] méthode élégante pour gérer les Keys Accelerator
    Bonjour,

    Je développe une appli qui doit gérer pls langues.
    Donc images et messages textuels sont gérés via des fichiers .properties et un ResourcesBundle.
    Pour tout ce qui est text, toolTip et mnemonic il n'y a pas de problème particulier.
    Par contre pour les Accelerator je suis obligé de passer directement la valeur numérique du deuxieme paramètre de la méthode getKeyStroke.
    Par exemple pour InputEvent.CTRL_MASK je remplace par 2 (1<<1 dans la class Event).
    Du coup le fichier properties devient un peu obscur.

    Mis a part mettre des commentaires explicites, je ne vois pas trop quoi faire car je ne pense pas que l'on puisse définir des "constantes précomilée" (oui je sais le terme n'est pas très heureux) du genre CTRL_MASK=2.
    Cela m'aurai permis d'utiliser de manière assez explicite le tag "CTRL_MASK".
    Je pourrai bien mouliner mes fichiers pour remplacer les "CTRL_MASK" par des 2, mais c'est un peu lourd.

    Je pense à moyen terme remplacer mes fichiers .properties par des fichiers XML (pour plein de bonnes raisons).
    Cela me permettra de définir de telles constantes, mais en attendant, si vous avez des solutions propres, je suis preneur.

    Merci!

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    utilise des énumérés que tu definis comme çi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    enum Vals {
       CRTL_MASK(InputEvent.CTRL_MASK ) , /// etc. etc.
       private int value ;
       public int getValue() {
          return value ;
      }
      Vals(int v) { this.value = v ; }
    }
    maintenant dans ton fichier .properties
    maintenant en consultant tes properties:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       String val = props.getProperty("codeA") ;
       int x = Vals.valueOf(val).getValue() ;
    bon j'ai un peu simplifié mais c'est l'idée générale

  3. #3
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Merci,
    Effectivement je peux retraiter ma chaine de caractère au moment de sa récupération dans le programme.
    J'aurai plutôt fait ça avec une Hashtable car j'avoue ne pas utiliser les enum... sans doute à tort car j'ai vu que l'on peut faire des choses assez touchy avec.
    Par contre pour l'utilisation basique façon c, je trouve la syntaxe un peu lourde.

    Enfin voici l'occasion de changer mes habitudes! merci

  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
    Salut,



    La méthode static KeyStroke.getKeyStroke(String) est fait pour cela !!!

    Ainsi pour créer un raccourci pour Ctrl+F1, dans ton code tu aurais mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyStroke ks = getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_MASK)

    Mais tu peux également faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KeyStroke ks = getKeyStroke("control F1");

    Plus d'info dans la doc

    a++

  5. #5
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut pilpoil
    Effectivement ça serai dommage de ne pas utiliser cette méthode!
    merci du tuyau je vais mettre ça en place de suite.

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

Discussions similaires

  1. Quels modules Perl pour gérer les documents XML ?
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 02/12/2010, 23h54
  2. [Info] Conseils pour gérer les ressources
    Par calogerogigante dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 05/07/2009, 12h49
  3. Réponses: 13
    Dernier message: 07/02/2007, 12h10
  4. Méthode simple pour gérer les collisions
    Par Hyoga dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/02/2005, 13h43

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