Partage
  • Partager sur Facebook
  • Partager sur Twitter

Supression d'écouteur impossible !

FocusListenner ne veut pas s'enlever

Sujet résolu
    21 janvier 2012 à 16:35:44

    Bonjour,
    j'ai créer une méthode pour pouvoir ajouter ou retirer des focusListenner sur mes JTextField, cela fonctionne pour l'ajout pas de problèmes, mais quand je les retire le focusListenner reste actif, pouvez vous m'aider svp ?

    public void editPoint(boolean editable){
        	xJtf.setEditable(editable);
        	yJtf.setEditable(editable);
        	if(editable){
        		xJtf.addFocusListener(new FocusJtf());
        		yJtf.addFocusListener(new FocusJtf());
        	}
        	else{
        		xJtf.removeFocusListener(xJtf.getFocusListeners()[0]);
        		yJtf.removeFocusListener(yJtf.getFocusListeners()[0]);
        	}
        }
    


    Pour info, xJtf et yJtf sont des JTextField et FocusJtf() est une classe interne qui implémente FocusListener et redéfinie les méthodes
    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2012 à 20:45:37

      Salut, essaies :

      xJtf.changeListeners.remove(xJtf.getFocusListeners()[0]); //À rajouter
      xJtf.removeFocusListener(xJtf.getFocusListeners()[0]);
      yJtf.changeListeners.remove(yJtf.getFocusListeners()[0]); //À rajouter
      yJtf.removeFocusListener(yJtf.getFocusListeners()[0]);
      


      Sinon je remarque que tu ajoutes un FocusListener à chaque fois que la méthode editPoint est appellée avec un booléen true, si dans ton programme tu fais plusieurs fois cela, il ne faut pas supprimer que l'index [0] mais tous les éléments du tableau.
      Le mieux serait de faire une boucle pour chacun de tes JTextField avec comme condition i < (x/y)Jtf.getFocusListeners().size(); pour être sur que tous les FocusListener de chacun des 2 soient bien supprimés.
      • Partager sur Facebook
      • Partager sur Twitter
      ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
        21 janvier 2012 à 21:12:13

        Salut merci pour ta réponse, j'ai résolu mon problème en changeant l'index de la suppression de mes écouteurs en choisissant l'index 2 car apparement les index 0 et 1 sont déja utiliser par le langage o_O .
        xJtf.removeFocusListener(xJtf.getFocusListeners()[2]);
        yJtf.removeFocusListener(yJtf.getFocusListeners()[2]);
        

        Je vais devoir surveiller de temps en temps pour peu que je me retrouve avec un index de plus a ajouter quand mon code évoluera.
        @ +++ et merci !
        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2012 à 21:23:03

          Ben au pire pour être sur de pas en oublier tu peux toujours faire la boucle en commençant à i = 2 au lieu de 0 ;)
          • Partager sur Facebook
          • Partager sur Twitter
          ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.

          Supression d'écouteur impossible !

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown