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

AWT/Swing Java Discussion :

JBouton et le clavier


Sujet :

AWT/Swing Java

  1. #1
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut JBouton et le clavier
    salut
    je ne sais pas comment faire la liaison entre le clavier et les boutons d'une interface
    par exemple j'ai une intrface qui contient un bouton calcule et je cherche si je tape si le clavier sur la touche entrer le bouton calcule déclanche execusion au lieu d'utiliser la souris

    je n'ai aucune idée sur ça vous pouvez me donner un exemple
    merci de m'avoir aider

  2. #2
    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
    S'il n'y a pas de solutions, il n'y a pas de problème.

  3. #3
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut
    je cherche si je tape sur le bouton entrée de clavier déclanche une actionlistener
    un exemple pour mieux comprendre

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    bonjour,

    Avec cet exemple, si tu presse la touche 'e' tu incrémente le clic...

    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
    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
     
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
     
     
    @SuppressWarnings("serial")
    public class MonApplet extends JApplet 
    {
       @Override
       public void destroy()
       {
          super.destroy();
         System.out.println("MonApplet:Destroy");
       }
     
       @Override
       public void init()
       {
          super.init();
          System.out.println("MonApplet:init");
       }
     
       @Override
       public void start()
       {
          super.start();
          System.out.println("MonApplet:start");
       }
     
       @Override
       public void stop()
       {
          super.stop();
          System.out.println("MonApplet:stop");
       }
     
       private int nbClic = 0;
       private JLabel lbl;
       public MonApplet()
       {
          System.out.println("MonApplet:constructor");
          JPanel pane = new JPanel();
          pane.setLayout(new FlowLayout(FlowLayout.LEFT,5,5));
          JButton btn = new JButton("clic ou appuie");
          btn.addActionListener(new ActionListener(){
     
             public void actionPerformed(ActionEvent e)
             {
                doAction();
             }});
          btn.addKeyListener(new KeyListener()
          {
     
             public void keyPressed(KeyEvent e)
             {
             }
     
             public void keyReleased(KeyEvent e)
             {
                if(e.getKeyChar()=='e') doAction();
             }
     
             public void keyTyped(KeyEvent e)
             {
             }
     
          });
     
     
          lbl = new JLabel("Hello World clic count="+nbClic);
          pane.add(lbl);
          pane.add(btn);
          JScrollPane myScroll = new JScrollPane(pane);
          setContentPane(myScroll);
       }
       private void doAction()
       {
          nbClic++;
          lbl.setText("Clic count="+nbClic);
       }
     
    }

  5. #5
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    salut
    j'ai essayé d'implementer le code mais message d'erreru
    voila le code
    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
    17
    18
    19
    20
    21
     
    package aa;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    public classe  ulysse extends JFrame implements ActionListener ,KeyListener{
    public Jpanel pan;
    private JButon sortir = new JButton ("sortir");
     
    public ulysse(){
    this.setResizable(false);
    this.setSize(620,620);
     
    pan.setLayout(null);
    sortir.addActionListener(this);
    sortir.addkeylistener(this);
    sortir.setBounds(300,400,100,300);
    pan.add(sortir);
     
    getContentpane().add(pan);
    }
    mais je n'ai pas mis la suite car le message d'erreru sur la ligne

    public classe ulysse extends JFrame implements ActionListener ,KeyListener{

    voila le message

    aa.ulysse should be declared abstract ;it does not define keypressed(java.awt.event.keyEvent)in aa.sortir


  6. #6
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    meme j'ai déclaré a la place abstract
    au untre message d'erreru
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main (String [] args ){
     
    ulysse fenetre = new fenetre();
    fenetre.setVisibles(true);
    message
    aa.ulysse abstract ;cannot be instantiated

  7. #7
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Oula !
    Dis-moi que tu n'as pas fait un copier/coller de ton code ???

    Pour répondre à ton erreur : toute classe implémentant KeyListener doit définir les méthode keyTyped, keyPressed, et keyReleased.

    Et sinon, pour t'aider...

  8. #8
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    pourquoi cette question tu sais bien que je n'ai aucune idée sur l'utilsation de la méthode et en plus je suis l'exemple cité au haut

  9. #9
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    A ce que j'ai compris de ton problème, tu cherches à définir un raccourci clavier pour ton boutton, c'est ça?

    Si c'est ça, rien de plus simple puisqu'il te suffit de regarder la doc java
    Je m'explique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JButton b = new JButton("Calcul")
    b.setMnemonic(KeyEvent.'choix')
    Et tu auras un raccourci sur la touche 'choix' (qu'il te faudra choisir dans les constantes de la classe KeyEvent : http://java.sun.com/j2se/1.4.2/docs/.../KeyEvent.html cf Field Summary)

    Voilà, si c'est pas très clair, dis moi je verrais ce que je peux faire pour être plus précis

    [EDIT] : J'ai oublié de préciser que le raccourci est ensuite accessible grâce à la combinaison Alt + la touche du clavier que tu auras choisi ... Voilà
    Pas de questions technique par MP, les forums sont là pour ça.

  10. #10
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Citation Envoyé par ulysse031
    pourquoi cette question tu sais bien que je n'ai aucune idée sur l'utilsation de la méthode et en plus je suis l'exemple cité au haut
    Ben parce que sans vouloir être méchant, il existe certaines conventions de codage entre autre. Par exemple, les noms de classe doivent commencer par une Majuscule et ceux de variables par des minuscules pour bien les différencier.

    Ensuite parce que ça m'étonnerait que ça marche vu que le mot clé "class" ne prend pas de "e", que JPanel s'écrit avec un "p" majuscule, que JButton prend 2 "t", etc...

    Du coup, ça risque pas de compiler avant un bon bout de temps...

    Sinon pour te débloquer, 2 solutions :
    - soit ta classe implémente KeyListener et tu fais un truc comme ça :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class Ulysse extends JFrame implements ActionListener, KeyListener {
       public JPanel pan;
       private JButton sortir = new JButton ("sortir");
     
       public Ulysse(){
          this.setResizable(false);
          this.setSize(620,620);
     
          pan = new JPanel();
          pan.setLayout(null);
          sortir.addActionListener(this);
          sortir.addkeylistener(this);
          sortir.setBounds(300,400,100,300);
          pan.add(sortir);
     
          getContentpane().add(pan);
       }
    
       public void keyTyped(KeyEvent e) {
          System.out.printlan("keyTyped");
       }
    
       public void keyPressed(KeyEvent e) {
          System.out.printlan("keyPressed");
       }
    
       public void keyReleased(KeyEvent e) {
          System.out.printlan("keyReleased");
       }
    }
    - soit tu ajoutes un listener à la volée :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public class Ulysse extends JFrame implements ActionListener {
       public JPanel pan;
       private JButton sortir = new JButton ("sortir");
     
       public Ulysse(){
          this.setResizable(false);
          this.setSize(620,620);
     
          pan = new JPanel();
          pan.setLayout(null);
          sortir.addActionListener(this);
          sortir.addkeylistener(new KeyListener() {
    
             public void keyTyped(KeyEvent e) {
                System.out.printlan("keyTyped");
             }
    
             public void keyPressed(KeyEvent e) {
                System.out.printlan("keyPressed");
             }
    
             public void keyReleased(KeyEvent e) {
                System.out.printlan("keyReleased");
             }
          });      
          sortir.setBounds(300,400,100,300);
          pan.add(sortir);
     
          getContentpane().add(pan);
       }
    }

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Points : 46
    Points
    46
    Par défaut
    Suit le tuto de sun donné par seiryujay:

    Pour ton premier message d'erreur, cf la réponse de seiryujay:

    Pour répondre à ton erreur : toute classe implémentant KeyListener doit définir les méthode keyTyped, keyPressed, et keyReleased.
    Pour ton second message d'erreur... le message est assez clair: Tu ne peux pas instancier une classe abstraite en JAVA mais seulement une classe qui implémente une classe abstraite.

    En résumé, tu reprends ton code pour la classe Ulysse, tu corrige au passage toutes tes erreurs de frappes et pour finir, tu surcharge toute les méthodes abstraite de la classe KeyListener (keyPressed, KeyTyped, etc...)

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    package aa;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    public class  ulysse extends JFrame implements ActionListener ,KeyListener{
    public JPanel pan;
    private JButton sortir = new JButton ("sortir");
     
    public ulysse(){
    this.setResizable(false);
    this.setSize(620,620);
     
    pan.setLayout(null);
    sortir.addActionListener(this);
    sortir.addKeyListener(this);
    sortir.setBounds(300,400,100,300);
    pan.add(sortir);
     
    getContentPane().add(pan);
    }
    
        /** Handle the key typed event from the text field. */
        public void keyTyped(KeyEvent e) {
    	displayInfo(e, "KEY TYPED: ");
        }
    
        /** Handle the key-pressed event from the text field. */
        public void keyPressed(KeyEvent e) {
    	displayInfo(e, "KEY PRESSED: ");
        }
    
        /** Handle the key-released event from the text field. */
        public void keyReleased(KeyEvent e) {
    	displayInfo(e, "KEY RELEASED: ");
        }
    Voila et au passage... je te pose la même question que seiryujay.. j'espere que ce n'est pas ton code... en tout cas précise le parce qu'il est remplit de fautes syntaxique


    Edit: Oups! Désolé du post un peu doublons, des réponses ont été postées au moment ou j'écrivais

  12. #12
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Citation Envoyé par tittoto
    Edit: Oups! Désolé du post un peu doublons, des réponses ont été postées au moment ou j'écrivais
    Prem's !

  13. #13
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci encore
    j'ai bien compris

    voila la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    private void doAction()
       {
          this .setVisibles(false);
    ulysse4  fenetre = ulysse4();
    fenetre?setvisible(true);
       }
    et dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    public void keyReleased(KeyEvent e)
             {
                if(e.getKeyChar()=='e') doAction();
             }
    mais l'action n'est pas déclanché

  14. #14
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    As-tu essayer le mode Debug ?
    Si oui, que se passe-t-il ?
    Si non, tu devrais essayer, ça te permettrait de voir ce qui ne va pas.

    Je te filerai une solution alternative une fois que je saurai ce qui cloche dans ton cas...

    PS : fais un effort sur le code : les fautes d'orthographes ça ne donne vraiment pas envie d'aider...

  15. #15
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci encore
    mais je n'ai pas bien compris le mode Debug

  16. #16
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Quand tu exécutes ton appli, en général tu as 2 modes de fonctionnement :
    - Release qui lance l'appli et basta
    - Debug qui te permet de placer des points d'arrêt dans ton code et stoppe l'exécution de ton prog lorsque celui-ci arrive sur ces points d'arrêt. Du coup, tu peux observer les valeurs de tes variables, vérifier que des conditions sont respectées ou pas.

    Palce un point d'arrêt au niveau de ton "if", lance ton programme en mode Debug et regarde ce que vaut ta condition...

  17. #17
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    merci merci encore de m'avoir aider mais je t'ais pas bien compris un petit exemple pour te suivre car c'est nouveau pour moi
    et en plus j'ai remarquer si je tape sur bouton sortir déclanche une action mais si te tape le caractere e rien a voir

  18. #18
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Oula...
    Bon ben on va pas aller bien loin si tu ne sais pas comment lancer ton prog en mode Debug. C'est quand même le meilleur moyen de voir ce qui ne va pas dans un programme. Comment tu faisais jusque là ???

    Tu développes avec quel IDE ? Eclipse ?

  19. #19
    Provisoirement toléré
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Points : 125
    Points
    125
    Par défaut
    attends je n'ai pas bien comprsi ce que tu voulais me demande please un exemple
    et je développe avec JBuilderX

  20. #20
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Je ne peux pas te donner d'exemple, puisque ce n'est pas un bout de code, c'est juste lancer ton prog en mode Debug...
    Mais bon, désolé, j'ai pas envie de passer l'après-midi à essayer de t'apprendre à utiliser ton IDE (essaie de regarder l'aide).

    Essaie ceci et ça devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void keyReleased(KeyEvent e) {
       if (e.getKeyCode()==KeyEvent.VK_E) 
          doAction();
    }
    Mais normalement ta version aurait dû fonctionner aussi.
    Si le code que je viens de te poster ne fonctionne pas, c'est que tu as mal ajouté ton listener...

Discussions similaires

  1. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42
  2. [TP]vider le tampon clavier
    Par kael kael dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 11/01/2003, 22h19
  3. Clavier Azerty
    Par Smortex dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 16/12/2002, 20h33
  4. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11
  5. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35

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