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 :

[JWindow + KeyListener] Impossible d'avoir un KeyEvent


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut [JWindow + KeyListener] Impossible d'avoir un KeyEvent
    Bonjour,

    j'ai une JWindow en mode pleine écran à laquelle j'ai ajouté un KeyAdapter. Le problème : il semble ne pas fonctionner, en tout cas aucun événement ne semble être détecté, pourquoi ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 137
    Par défaut
    A quoi rajoutes-tu le keylistener ?
    Au ???


    Vérifie également le profil des fonctions dans ton keyAdapter, pour qu'ils correspondent bien au keylistener habituel. Si tu implémentes une fonction qui n'est pas définie dans le keylistener, il n'y aura pas de problème à la compilation, mais pas d'événements générés. Une solution serait de remplacer ton keyAdapter par un keyListener pour vérifier ce cas-là.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    j'ai essayé this.addKeyListener(...) et contentPane.addKeyListener(...), mais sans succès. Et pout info, je ne redéfinis que la méthode keyPressed(KeyEvent e) => tout ce qu'il y a de plus basique. C'est curieux non ? J'avais déjà eu le même problème dans une JFrame mais lorsque des composants étaient rajoutés après l'ajout du KeyListener, mais là, aucun élément n'est ajouté.

  4. #4
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    dans la définition de ta classe JWindow tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MonProg extends JWindow implements KeyListener
    dans le constructeur de ta JWindow tu mets:
    dans ta classe ensuite tu rajoutes ces 3 méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void keyPressed( KeyEvent evt ) {}
    public void keyTyped( KeyEvent evt ) {}
    public void keyReleased( KeyEvent evt ) {}
    si après ca, ca ne marche pas, c'est que ton probleme vient d'ailleurs
    voila

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    je sais comment ajouter un KeyListener, le problème n'est pas là...

  6. #6
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    Et pout info, je ne redéfinis que la méthode keyPressed(KeyEvent e) => tout ce qu'il y a de plus basique
    tu mets aussi ces méthodes dans ta JWindow ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	public void keyTyped( KeyEvent evt ) {}
    	public void keyReleased( KeyEvent evt ) {}
    sinon fais voir une partie ou la totalité de ton code, car la c'est bizarre, normalement ca marche tres bien

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    J'ajoute ça au constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    this.addKeyListener(new KeyAdapter(){
          public void keyPressed(KeyEvent e){
            if (e.getKeyChar() == 'x'){
              System.exit(1);
            }
          }
        });
    En gros, la seule chose qui se passe sans ma JWindow c'est qu'une boucle infinie appelle repaint() toutes les x millisecondes pour afficher à l'écran le contenu d'un backbuffer...

  8. #8
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    mm bizarre loooooool ca m'fait beaucoup penser à certains trucs
    t'en ferais pas un jeu par hasard ?
    en tout cas tu fais quelque chose de très orienté graphisme

    tu dois pouvoir faire je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( e.getKeyCode() == KeyEvent.VK_A )
    sinon je pencherais pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char c;
    c = e.getKeyChar();
    if ( c.equals("x"))
    j'espere que j'ai trouvé ton probleme et reponds a ma question

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    je n'ai pas l'impression que ma méthode soit fausse car je l'ai toujours utilisée comme ça. J'ai l'impression que le focus n'est pas sur la JWindow et que c'est pour ça que rien ne se passe. En tout cas j'ai essayé tes propositions, la première est équivalente à la mienne et la deuxième est impossible à cause du equals appellé sur le char (ce qui n'a pas de sens vu qu'un type primitif contient directement une valeur et non une référence)

    Oui, c'est effectivement un jeu (enfin pour l'instant ça ressemble à rien mais ça viendra )

  10. #10
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    essaies en remplacant ta JWindow par une JFrame tout betement mais a mon avis ca changera pas grand chose, ton probleme doit venir d'ailleurs

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    mais t'arrives à mettre une JFrame en plein écran toi ?

  12. #12
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    bah bien sur LOOOOOOL !
    a mon avis tu dois avoir des problemes avec ton SDK installé ou a la compilation, tentes de reinstall un SDK, sinon au pire j'peux te filer des bouts d'code

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    a mon avis tu te trompes, une JFrame possède automatiquement une barre en haut avec un bouton fermer, minimiser, maximiser et un titre...
    (et de toute façon le même problème se pose avec une JFrame, donc laissons de côté ce point)

    Quand à mon sdk, il marche très bien, j'en suis sûr

  14. #14
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    sur ta JFrame tu mets dans son constructeur la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setUndecorated( true );
    et apres y'a pu de barre de menu, titre, bordures, bouton réduire/fermer, etc...

    différence entre une JFrame et une JWindow :
    - la JWindow n'est pas déplacable
    - la JWindow n'a pas de bordure
    - la JWindow n'a ni barre de titres ni boutons fermer/agrandir/reduire
    - la JWindow consomme un peu moins de mémoire (j'ai bien dit un peu !)

    deja ton KeyAdapter pour ton KeyListener devrait marcher sur ta JFrame, c'est soit que tu as oublié un détail, soit que tu as un probleme de SDK, je ne vois que ca
    perso, sur ma JFrame en plein écran, j'ai un KeyListener et un MouseListener et j'ai aucun probleme et j'suis en Java_1.4.1_05

    si tu l'souhaites je peux te filer mon code pour mettre une JFrame en plein écran, c'est pas sorcier et tu pourrais te rendre compte que ca vient de chez toi

  15. #15
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 69
    Par défaut
    ok, alors finalement c'était bien un problème de JWindow. J'ai transformé en JFrame plein écran et ça marche .

    Merci pour ton aide narkotik

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/10/2010, 12h09
  2. impossible d'avoir deux servlets
    Par hamham dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 02/02/2007, 14h44
  3. impossible d avoir l evemement Click Droit
    Par magnus2005 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/09/2006, 14h57
  4. Réponses: 1
    Dernier message: 15/08/2006, 12h18
  5. Impossible d'avoir un arrière plan en utilisant CSS
    Par Tartenpion dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/06/2005, 14h00

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