Java : JFormattedTextField + sélection texte

Résolu/Fermé
Signaler
-
 pLachance -
Voilà j'ai un champ JFormattedTextField créer avec un textFormatter et lorsqu'il reçoit le focus ( focusGained) je voudrais que tout le texte du champ soit sélectionner.
J'ai essayer les méthodes select(int,int) et selectAll() mais ça ne veut pas fonctionner!!

Quelqu'un a-t'il la solution?!!

Merci d'avance !!!

NB : j'ai aussi tester avec un JFormattedTextField simple et c'est la meme chose!!

6 réponses

Voici la réponse à m'a propre question :

public void focusGained(java.awt.event.FocusEvent e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
monJFormattedTextField.selectAll();
}
});
}

Un peu tiré par les cheveux j'avoue!!

;)
3
Messages postés
618
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
13 juillet 2013
971

JTextField jtf1 = new JTextField();
jtf1.setText("hack");
jtf1.addFocusListener(new FocusListener() {
  public void focusGained(FocusEvent e) {
    System.out.println("focus gained");
    src.setSelectionStart(0);
    src.setSelectionEnd(src.getText().length());
  }

  public void focusLost(FocusEvent e) {
    System.out.println("focus lost");}
  });



;-)
HackTrack
1
Messages postés
618
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
13 juillet 2013
971
Salut!

J'ai essayé avec unJFormattedTextField et ça fonctionne très bien.

JFormattedTextField jtf1 = new JFormattedTextField();
jtf1.setText("hack");
jtf1.addFocusListener(new FocusListener() {
  public void focusGained(FocusEvent e) {
   JTextField src = (JTextField)e.getSource();
   System.out.println("focus gained");
   src.setSelectionStart(0);
   src.setSelectionEnd(src.getText().length());
}

public void focusLost(FocusEvent e) {
  System.out.println("focus lost");}
});


Qu'entends-tu par "créé par un TextFormatter". Cette classe n'existe pas dans le JDK (du moins le 1.4.2)



;-)
HackTrack
1
Slt HackTrack

oui ce que tu as proposer fonctionne bien pour les JTxtField mais pas pour les JFormattedTextField surtout s'ils utilisent des "Formatter"

;)

Tony
0
Re Slt!!


Il est tout à fait vrai que cela fonctionne avec un JFormattedTextField au quel tu n'appliques aucun AbstractFormatter, AbstractFormatterFactory ou Format. Dans ton cas tu utilises le JFormattedTextField comme un JTextField!!!!

Par contre si tu crées un JFormattedTextField avec un MaskFormatter ou NumberFormatter ou DateFormatter par exemple cela ne fonctionne plus et donc tu est obligé d'utiliser la solution proposé (cf doc java)

Sinon pour le TextFormatter c t un abus de langage dsl

Tony
0
En effet le traitement doit etre dans un Thread pour fonctionner comme-il-faut car l'objet JFormattedTextField doit effectuer un certain traitement pour "Formatter" le texte et si le tout n'est pas dans un thread la commande sera executée mais le resultat non affiché...

Exemple de thread:

SwingUtilities.invokeLater(new Runnable() {
public void run() {
// Placez le code a executer ici
}
});

Voici un lien sur un article sur les threads directement de chez Sun!

https://www.oracle.com/java/technologies/

j'espere que ca aidera ceux qui tombent sur ce genre de probleme! :)
0