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

 Java Discussion :

Ajouter une mnémonique dynamiquement en fonction d'un onglet


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut Ajouter une mnémonique dynamiquement en fonction d'un onglet
    Bonjour, j'aimerai créer des mnémoniques pour mes onglet afin que je puisse passer d'un à l'autre en tapant sur les touches 1,2,3,..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        itemOuvrir.addActionListener(new ActionListener(){
        	public void actionPerformed(ActionEvent arg0){
        		String choix = afficheDossiersDiapo(listeDossiers);
        		if(listeOngletOuvert.contains(choix) == false){
        			onglets.add(choix, new Panneau(Color.DARK_GRAY));
        			listeOngletOuvert.add(choix);
        			int position = onglets.indexOfTab(choix);
        			onglets.setMnemonicAt(position, ("KeyEvent.VK_"+position));  /* ici j'ai une erreur. j'ai int/String mais je ne peux avoir que int/int. Comment faire pour choisir le KeyEvent en fonction de la position dans le tableau? */
        		}
        	}
        });
        this.menuFichier.add(itemOuvrir);


    onglets est un objet de type JTabedPane, afficheDossiersDiapo est une fonction qui retourne un String.

    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu as une erreur parce que l'argument attendu en seconde position de setMnemonic est un int, pas un String. La valeur pour la touche 1, c'est KeyEvent.VK_1, une constante de la classe KeyEvent, de type int, pas la chaîne "KeyEvent.VK_1".

    Par ailleurs, un mnemonic est accessible par combinaison avec ALT, et les chiffres situés en haut du clavier ne fonctionnent que si on passe en majuscule (le bouton capslock, pas shift qui n'a aucun effet pour un mnemonic), ou sinon il faut passer par le pavé numérique. Ce qui n'est pas du plus pratique.

    Pour faire ce que tu cherches à faire, il vaut mieux passer par l'InputMap/ActionMap (Key binding) :

    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
    Panneau panneau = new Panneau(Color.DARK_GRAY);
    onglets.add(choix, panneau);
    listeOngletOuvert.add(choix);
    int position = onglets.indexOfComponent(panneau);
    final String actionName = "selectedTab"+index; // un nom d'action
    int key = KeyEvent.VK_0+index+1; // le code la touche (1 pour l'onglet d'index 0...)
    onglets.getInputMap().put(KeyStroke.getKeyStroke(key, 0), actionName); // on associe la touche avec l'action
    // puis on définit l'action
    onglets.getActionMap().put("selectedTab"+index, new AbstractAction() { 
     
    	public void actionPerformed(ActionEvent e) {
    	    onglets.setSelectedComponent(panneau);
    	}
     
        });
    }
    Tu peux combiner les deux (le mnemonic + l'inputmap/actionmap).

    PS : si tu es sous une version de Java inférieure à 8, il faudra déclarer onglets et panneau final.
    PS2 : si tu supprimes des onglets, il faut supprimer le key binding correspondant.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Par défaut
    merci Joel C'est bien compliquer tout ça pour des mnémoniques :/

    Je vais essayer.

    Have a good summer

Discussions similaires

  1. [PHP 5.2] ajouter une action a la fonction echo
    Par Ylvin dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2010, 20h42
  2. Ajouter une requête dynamiquement à une BD ACCESS
    Par dsolheid dans le forum VB.NET
    Réponses: 7
    Dernier message: 19/10/2008, 17h26
  3. Ajouter une requête dynamiquement à une BD ACCESS
    Par dsolheid dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/10/2008, 16h05
  4. Modifier une image dynamiquement en fonction d'une liste
    Par metatron dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/11/2006, 18h33
  5. [C#] ajouter une image dynamiquement
    Par h_imane dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 12h27

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