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

Agents de placement/Fenêtres Java Discussion :

[JTabbedPane] setMnemonicAt et les chiffres


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut [JTabbedPane] setMnemonicAt et les chiffres
    bonjour,

    j'essaye de programmer un raccourci clavier (de la forme Alt+XX) pour chaque onglet d'un jTabbedPane.

    Les raccourcis fonctionnent très bien avec des lettres mais avec les chiffres c'est une autre histoire

    J'ai suivi cet exemple :
    http://java.sun.com/docs/books/tutor...abbedpane.html
    Un chiffre est utilisé comme raccourci clavier pour passer d'un onglet à l'autre.

    Le problème est le suivant : il faut que la touche CAPS soit activée pour que les raccourcis Alt+1, Alt+2, etc. fonctionnent.



    - Comment je peux associer un chiffre du clavier comme raccourci sans que les touches SHIFT, CAPS aient une influence (avec les lettres ces touchent n'ont curieusement et heureusement aucune influence) ?

    - Par ailleurs j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.jTabbedPane1.setMnemonicAt(0, KeyEvent.KeyEvent.VK_NUMPAD1);
    et ça ne fonctionne pas. Pourquoi ?

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Déjà j'ai appris que sur un clavier qwerty, il n'est pas utile d'appuyer sur CAPS pour avoir les chiffres contrairement au clavier azerty.

    L'exemple fonctionne donc très bien... sur un clavier qwerty

    setMnemonicAt() est insensible à la casse c'est pour ça que les lettres sont reconnues.

    Les chiffres n'ayant pas de minuscules setMnemonicAt() ne peut donc pas fonctionner si la touche CAPS n'est pas verrouillée.

    Pour le pavé numérique je n'ai pas trouvé d'explication...


    Je cherche donc un compromis.
    Un keyListener dans ma jFrame serait une solution un peu complexe à mettre en place

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    J'ai trouvé une solution
    j'ai placé dans les onglets des boutons car eux fonctionnent très bien avec les chiffres et j'ai surchargé la méthode setMnemonicAt().

    Voilà le code :

    Code java : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
     
    package myjtabbedpane;
     
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JButton;
    import javax.swing.JTabbedPane;
     
    /**
     *
     * @author Auteur / www.developpez.com
     */
    public class myTabbedPane extends JTabbedPane
    {
        public myTabbedPane()
        {
            super();
        }
     
        public void initMnemonic()
        {
            //this.setMnemonicAt(0, KeyEvent.VK_1);
            //this.setMnemonicAt(1, KeyEvent.VK_2);
            this.setMnemonicAt(2, KeyEvent.VK_3);
            this.setMnemonicAt(3, KeyEvent.VK_4);
            this.setMnemonicAt(4, KeyEvent.VK_5);
     
     
            this.setMnemonicAt(0, KeyEvent.VK_A);
            this.setMnemonicAt(1, KeyEvent.VK_B);
            //this.setMnemonicAt(2, KeyEvent.VK_C);
            //this.setMnemonicAt(3, KeyEvent.VK_D);
            //this.setMnemonicAt(4, KeyEvent.VK_E);
     
     
        }
     
        @Override
        public void setMnemonicAt(int index, int keyCode)
        {
            JButton btn = null;
     
            btn = new JButton(this.getTitleAt(index));
     
            btn.setMnemonic(keyCode);
     
            btn.setFocusPainted(false);
            btn.setBorderPainted(false);
            btn.setContentAreaFilled(false);
     
     
            btn.addKeyListener(new KeyAdapter()
            {
                @Override
                public void keyReleased(KeyEvent evt)
                {
                    tabPaneKeyReleased(evt);
                }
            });
     
     
            btn.addMouseListener(new MouseAdapter()
            {
                @Override
                public void mouseReleased(MouseEvent evt)
                {
                    tabPaneMouseReleased(evt);
                }
            });
     
            this.setTabComponentAt(index, btn);
        }
     
        private void tabPaneKeyReleased(KeyEvent evt)
        {
            int index, x, y;
     
            x = ((JButton)evt.getSource()).getX();
            y = ((JButton)evt.getSource()).getY();
     
            index = this.indexAtLocation(x, y);
            if (index>=0)
            {
                this.setSelectedIndex(index);
            }
     
        }
     
        private void tabPaneMouseReleased(MouseEvent evt)
        {
            int index, x, y;
     
            x = ((JButton)evt.getSource()).getX();
            y = ((JButton)evt.getSource()).getY();
     
            index = this.indexAtLocation(x, y);
            if (index>=0)
            {
                this.setSelectedIndex(index);
            }
        }
     
    }

    Les deux premiers onglets ont comme raccourci A et B les autres ont comme raccourci 3, 4 et 5


    Je crois que cela peut faire une source pour ceux que cela intéresse

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

Discussions similaires

  1. extraire uniquement les chiffres d'une cellule
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2017, 18h25
  2. un input qui accepte que les chiffres ?
    Par VerrNum dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/03/2006, 13h28
  3. un champ n'accepte que les chiffres....
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/10/2005, 14h18
  4. xslt --> test sur les chiffres
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/09/2005, 13h17
  5. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11

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