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

Composants Java Discussion :

Reconnaître une action souris dans le FocusListener


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Dévelopeur Cobol + Java J2SE
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dévelopeur Cobol + Java J2SE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Par défaut Reconnaître une action souris dans le FocusListener
    bonjour, je voudrais dans un focuslistener savoir si l'évènement qui a provoqué le focus est un clic souris ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class GfocusEvent implements FocusListener{
    @Override
    public void focusGained(FocusEvent e) {
       SI prise focus provoquée par souris, ALORS ne rien faire, 
       SINON
          JTextComponent target = (JTextComponent)e.getSource(); 
          if (target instanceof JTextField) {
             JTextField field = (JTextField) target;
             field.setCaretPosition(0);}

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    je pense à 2 astuces pour résoudre ce problème:
    #1: accrocher un MouseListener au composant dont vous voulez détecter la prise de focus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champSaisie.add( new classeClicSouris());
    Dans cette classe, vous activez par exemple un drapeau qui va modifier le comportement de traitement dans votre classe GfocusEvent.

    #2: dans la version de votre classe GfocusEvent, vous interrogez où se trouve la souris par rapport au composant. Je ne connais pas trop les détails, mais je sais que cela existe.
    Si vous ne trouvez pas de souris au-dessus du composant, il y a de fortes chances pour que le focus soit arrivé par un autre évènement. (Mais cette solution n'est pas sûre à 100%)

  3. #3
    Membre confirmé
    Homme Profil pro
    Dévelopeur Cobol + Java J2SE
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dévelopeur Cobol + Java J2SE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Par défaut trouvé
    merci rtg57, oui effectivement j'ai créé un autre écouteur (MouseListener) dans lequel je sette un flag "isCliqué" du composant en cas de MousePressed,
    et après je n'ai plus qu'à modifier mon GfocusListener pour tester si mon composant est cliqué. Si qq un voit mieux à faire je suis preneur :
    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
    public class GMouseAdapter extends MouseAdapter{
        @Override
        public void mousePressed(MouseEvent e) {
            JTextComponent target = (JTextComponent)e.getSource(); 
            if (target instanceof GtextField) {
                GtextField field = (GtextField) target;
                field.setClicked(true);
            }
        }
    }
    public class GfocusAdapter extends FocusAdapter{
     
        @Override
        public void focusGained(FocusEvent e) {
            JTextComponent target = (JTextComponent)e.getSource(); 
            if (target instanceof GtextField) {
                GtextField field = (GtextField) target;
                if (!field.isClicked())
                    if (e.getOppositeComponent() !=null) // focus pris depuis autre application
                        field.setCaretPosition(0);
                field.setClicked(false);
            }

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

Discussions similaires

  1. Programmer une action répétitive dans le temps
    Par Milliie dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 22/04/2015, 18h22
  2. [1.x] retirer une action/lien dans l admin generator
    Par mantex dans le forum Symfony
    Réponses: 4
    Dernier message: 02/02/2011, 10h44
  3. Réponses: 3
    Dernier message: 29/12/2009, 12h00
  4. rediriger vers une action/page dans un thread
    Par Tanebisse dans le forum Struts 1
    Réponses: 4
    Dernier message: 15/05/2008, 12h03
  5. Réponses: 2
    Dernier message: 17/04/2008, 22h44

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