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 :

interaction Listerner et Focus


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut interaction Listerner et Focus
    Bonjour,

    dans une JFrame en plein écran j'ai des JInternalFrame.

    J'ai un KeyListener et un MouseListener sur la JFrame.

    Dans mes JInternalFrame j'ai des boutons "spéciaux" (ré-implémentés séparément qui eux aussi implementent MouseListener pour gérer les evements souris).

    Au lancement de l'application il detecte le passage de la souris sur mes boutons. Cependant, pour générer un evenement clicked, j'ai besoin de deux click : le premier qui donne le focus sur la JInternalFrame et le deuxième qui donne l'évement clicked. Mais, à partir du moment où j'ai donné le focus à ma JInternalFrame ma JFrame ne reçoit plus les evenements KeyPressed. Ce qui est embetant.

    Comment réparer ça ?

    cordialement
    trax

  2. #2
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Il vaut mieux gérer les événements clavier avec le système des InputMap et ActionMap, comme expliqué dans How to Use Key Bindings. En particulier vois JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT.

    Sinon si tu ne veux pas utiliser ce système il faut que tu gères toi même le parcours des événements clavier, à partir du composant qui a le focus.

  3. #3
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut
    j'ai essayé de mettre des KeyListener un peu partout sur ma JInternalFrame, mais aucun ne réponds. Par contre les MouseListener sur les bouttons a l'intérieur de la JInternalFrame fonctionnent parfaitement. Je ne comprends vraiment pas.

    Sinon, je n'arrive pas non plus a faire perdre le focus a ma JInternalFrame (ou le redonner a ma JFrame) ce qui serait une solution, bien que pas très propre :s


  4. #4
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut
    Je pense avoir trouver une piste mais pour l'instant ça me mène a rien :
    setFocusTraversalKeysEnabled

    Si j'ai bien compris c'est censé laissé les evenements traverser la JInternalFrame non ?

  5. #5
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut
    juste erreure de vocabulaire, la JInternalFrame n'a pas le focus (quand elle a le focus les Keylistener ne marche plus au démarrage de l'appli) devient active quand on click dessu

  6. #6
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut fin a mon monologue
    bon j'ai toujours pas compris pourquoi ça marchait pas;
    MAIS j'ai compris pourquoi mon nouveau code marche.

    Je mets mes Listener sur ma_JFrame.getRootPane().addMonListener(this) ;

Discussions similaires

  1. Rajout du focus
    Par Claythest dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/06/2003, 17h10
  2. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  3. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. focus en C
    Par killpilot dans le forum C
    Réponses: 8
    Dernier message: 19/04/2002, 19h19

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