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 :

[Swing]Perte de focus pour keyboardListener


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut [Swing]Perte de focus pour keyboardListener
    Bonjour,

    J'ai un applet java avec une animation 3d dont je peux bouger le contenu avec le clavier de des JButton.
    Lorsque je lance mon applet, aucun problème, tout fonctionne (keyboard/JButotn). Mais dès que je change de fenêtre, je perd le focus.

    J'ai utilisé des méthodes bourrines genre :
    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
            if (!isVisible()) {
                this.setVisible(true);
            }
            this.requestFocus();
     
            this.requestFocusInWindow();
            this.addFocusListener(
                    new FocusListener() {
     
                        public void focusGained(FocusEvent e) {
                            l.log(Level.INFO, "Gain focus");
                        }
     
                        public void focusLost(FocusEvent e) {
                            l.log(Level.INFO, "lose focus");
                            requestFocusInWindow();
     
                        }
                    });
    Je garde bien le focus mais le problème est que je ne peux plus ouvrir de JFrame maintenant...


    Question : Quel est la meilleur façon de garder le focus sur mon applet ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par forumde Voir le message
    Question : Quel est la meilleur façon de garder le focus sur mon applet ?
    Je vois plutôt le problème autrement : l'utilisateur à le droit de donner le focus à ce qu'il veut. Mais s'il souhaite agir sur ton applet, alors il faut juste l'avertir lorsque l'applet n'a plus le focus.
    Ainsi, lorsque l'Applet n'a plus le focus, peut-être suffit-il d'ajouter un petit bandeau semi-transparent avec un texte genre "cliquer pour agir avec les touches bla, bla et bla". Après l'obtention du focus, l'Applet supprime l'avertissement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Je vois plutôt le problème autrement : l'utilisateur à le droit de donner le focus à ce qu'il veut. Mais s'il souhaite agir sur ton applet, alors il faut juste l'avertir lorsque l'applet n'a plus le focus.
    Ainsi, lorsque l'Applet n'a plus le focus, peut-être suffit-il d'ajouter un petit bandeau semi-transparent avec un texte genre "cliquer pour agir avec les touches bla, bla et bla". Après l'obtention du focus, l'Applet supprime l'avertissement.
    Je me suis mal exprimé : je ne souhaite évidement pas garder le focus en permanence ! Je souhaite juste le garder lorsque mon applet/application est "active". De plus, je préfère que cela soit ttransparent pour l'utilisateur (qu'il n'est pas besoin de cliquer sur un bandeau)

    Le plus simple reste un petit exemple :
    • Je lance mon application
    • J'utilise le clavier pour bouger mes trucs et cela fonctionne
    • J'utilise ensuite ma souris et je clique sur mes boutons pour bouger mes trucs et cela fonctionne
    • J'utilise de nouveau mon clavier et là : ça ne fonctionne plus !


    J'espère avoir été un peu plus clair.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Ah ok
    Donc le focus est resté sur le bouton cliqué. C'est dans les actions des boutons que tu dois redonner le focus à ta zone d'affichage.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2009
    Messages : 88
    Points : 71
    Points
    71
    Par défaut
    où carrément mettre setFocusable(false) sur les boutons non ?

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Ah ok
    Donc le focus est resté sur le bouton cliqué. C'est dans les actions des boutons que tu dois redonner le focus à ta zone d'affichage.
    Ok je viens de fouiller dans :
    http://www.javaworld.com/javaworld/j...ing-focus.html (j'ai vite arrêté en voyant la date...
    http://java.sun.com/docs/books/tutor...isc/focus.html
    http://java.sun.com/javase/6/docs/ap...FocusSpec.html
    Mais je n'ai pas trouvé mon bonheur. Il y a bien le Focus Traversal mais ce n'est pas adapté.
    Voici en gros mon appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Applet/Application
    |-jpanel 1
    |      |-JButtonUp
    |      |-this.JButtonUp.addChangeListener(new PanListener());
    |
    |-jpanel2
    [-.. etc
    |-this.addKeyListener
    Comment donner le focus à mon applet dans ma Class PanListener ?

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par forumde Voir le message
    Comment donner le focus à mon applet dans ma Class PanListener ?
    Ton Applet a toujours le focus, il est sur un de ses composants ;-)
    Il faut transmettre le composant en paramètre de PanListener qui doit recevoir le focus.

    Sinon, tu as testé l'idée de doobinay ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Ton Applet a toujours le focus, il est sur un de ses composants ;-)
    Il faut transmettre le composant en paramètre de PanListener qui doit recevoir le focus.

    Sinon, tu as testé l'idée de doobinay ?
    J'ai piqué vos deux idées et cela fonctionne parfaitement
    Merci pour tout.

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

Discussions similaires

  1. [Swing] JFormattedTextField et perte de focus
    Par YassVegas dans le forum Débuter
    Réponses: 2
    Dernier message: 01/05/2014, 14h51
  2. Evénement pour empêcher la perte de focus sur TEdit
    Par Greldinard dans le forum Composants VCL
    Réponses: 7
    Dernier message: 17/10/2013, 08h56
  3. Sauvegarde sur perte du focus pour un QComboBox
    Par morinxav1 dans le forum Débuter
    Réponses: 7
    Dernier message: 07/10/2011, 09h06
  4. excel -> test lors de la perte du focus d'une cellule
    Par greg778 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/09/2005, 17h26
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 08h00

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