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 :

[KeyListener] detection clavier


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut [KeyListener] detection clavier
    Salut à tous,

    J'ai un exemple de code qui marche, où un JTextField détecte les touches clavier pressées. Mais moi je voudrais avoir un JPanel qui détecte lorsqu'on presse des touches (par ce qu'on doit pouvoir commander l'affichage au clavier). Et il ne détecte rien.

    Voilà 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
    22
    23
    24
    25
    26
    27
    28
    29
    import java.awt.event.*;
    import javax.swing.*;
     
    public class KeyEventDemo extends JFrame implements KeyListener
    {
        //JTextField typingArea;
       JPanel typingArea;
        static final long serialVersionUID=0;
     
        public static void main(String[] args)
        {
            KeyEventDemo frame = new KeyEventDemo();
            //frame.typingArea = new JTextField(10);
            frame.typingArea=new JPanel();
            frame.typingArea.addKeyListener(frame);
            frame.setContentPane(frame.typingArea);
            frame.setVisible(true);
            frame.pack();
        }
        public void keyTyped(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
        public void keyPressed(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
        public void keyReleased(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
    }
    Il suffit que j'utilise les lignes commentées (le JTextField) à la place du JPanel pour que ça marche. Mais moi je ne veux pas de JTextField

    Alors comment faire ?

    ... Merci d'avance !

  2. #2
    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 : 41
    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
    Par défaut
    Salut,

    Je suis pas sur que tu es saisi la notion de Panel parce qu'apparement, si j'ai bien compris, tu essais d'écrire sur un Panel Un Panel est un container pour pouvoir placer différents composant graphiques... Je sais pas trop ce que tu veux faire dans ton application, mais il ne me semble pas que c'est comme ça que tu vas y arriver .. Pour t'en convaincre : Comment utiliser les Panels
    Si tu veux un composant graphiques pour écrire du texte, je te conseille de te tourner vers les JTextPane, ou les JTextArea selon tes besoins...

    Voilà, j'espères avoir été utiles
    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Salut Gueritarish,

    Un Panel est un container pour pouvoir placer différents composant graphiques
    Exactement ! Là le bout de code est un exemple simple, mais en définitive, le programme final sera un affichage graphique avec des points, des lignes, etc. Et cet affichage devra pouvoir être déplacé et zoomé à l'aide notamment des touches "FLECHES" du clavier. C'est pourquoi j'ai besoin de lire les événements clavier dans mon panel, et non pas dans un JTextPanel !

    ... Je crois que comme ça, ça a l'air plus logique !

  4. #4
    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 : 41
    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
    Par défaut
    J'avais pas regardé ton code...

    Le truc c'est que tu n'ajoutes pas ton Panel à ta Frame...Donc, pour récupérer les évènements, je ne pense pas que ce soit le top du must. En plus tu ajoutes ton keyListener à ta Frame !! Pourquoi tu ne l'ajoutes pas à ton Panel
    Bref, je te refille un petit lien vers le tuto Sun sur les KeyListener : Keylistener

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Bref, je te refille un petit lien vers le tuto Sun sur les KeyListener
    Arf, le monde est petit... le code ci-dessus est en fait une version ultra-simplifiée (j'ai viré tout ce qui n'était pas strictement nécessaire) dudit tuto Sun, où j'ai remplacé le JTextPanel par un JPanel.

    En fait c'est juste un test pour comprendre. A part ça j'ai un autre code qui pose le "vrai problème", mais je ne peux pas le poster ici, il y a déja qqes centaines de lignes de code et plusieurs classes.

    Pourquoi tu ne l'ajoutes pas à ton Panel
    Par ce que c'est le tuto de Sun que je suis à la lettre (juste simplifié)... Mais si tu penses que c'est mieux, je vais essayer...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Ah mais c'est trop c**, *** !

    Il suffisait de dire que le JPanel est "focusable" avec:

    typingArea.setFocusable(true)

    Je l'avais pas fait par ce que j'avais vérifié qu'il était focusable par défaut en faisant un System.out.println(typingArea.getIsFocusableMachin) et j'obtenais bien true, donc j'ai pensé inutile de faire cette manip.

    Incroyable... ... Enfin merci quand même !

    La solution
    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
     
    import java.awt.event.*;
    import javax.swing.*;
     
    public class KeyEventDemo extends JFrame implements KeyListener
    {
        //static JTextField typingArea;
    	static JPanel typingArea;
        static final long serialVersionUID=0;
     
        public static void main(String[] args)
        {
            KeyEventDemo frame = new KeyEventDemo();
            //typingArea = new JTextField(10);
            typingArea=new JPanel();
            typingArea.setFocusable(true);
            //typingArea.requestFocusInWindow();
            typingArea.addKeyListener(frame);
            frame.setContentPane(typingArea);
            frame.setVisible(true);
            frame.pack();
        }
        public void keyTyped(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
        public void keyPressed(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
        public void keyReleased(KeyEvent e) {
        	System.out.println(e.getKeyChar());
        }
    }

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

Discussions similaires

  1. detection clavier pressé et non pressé
    Par visualk dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2010, 15h02
  2. Clavier non détecté au démarrage
    Par zchallal dans le forum Matériel
    Réponses: 2
    Dernier message: 05/05/2006, 10h03
  3. detecter une touche du clavier
    Par Hypnocrate dans le forum C
    Réponses: 20
    Dernier message: 02/05/2006, 17h58
  4. Detecter quand on tape au clavier
    Par mrpowerboy dans le forum C
    Réponses: 12
    Dernier message: 29/11/2005, 20h25
  5. Problème de detection de clavier et de souris
    Par azd dans le forum Périphériques
    Réponses: 6
    Dernier message: 21/11/2005, 15h33

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