Utilisation de JFormattedTextField

anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011 - 28 juin 2011 à 13:05
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 30 juin 2011 à 10:50
Bonjour,

j'ai un petit problème sur le JFormattedField que je compte sur vous pour le resoudre ;-)

J'utilise un JFormattedField ( jft ) dans ma JFrame avec le mask "#"

private JFormattedTextField jft;
try{
MaskFormatter maskCount = new MaskFormatter("#");
jft = new JFormattedTextField(maskCount); 
}catch(ParseException evt){
}

Le problème c'est que dans ma JFrame au premier coup je peux taper ce que je veux sur le jft malgré le mask, mais dés que je clik sur le jft ou sur n'importe qu'il composant de la JFrame ou quand j'efface et je réecris dans le jft, ben la ça marche et le mask fonctionne et je ne peux taper qu 'un chiffre.

donc je souhaite que mon mask marche o premier coup...

Merci d'avance

8 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
28 juin 2011 à 13:48
Je n'avais jamais entendu parler de ce problème. Tu as essayé de mettre un doclick() sur un composant ou bien de faire un requestFocusInWindow sur le jft.

Même si ce n'est pas très élégant, ca pourrait résoudre ton problème
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
28 juin 2011 à 14:01
Excusez moi , mais je vois pas comment ?
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
28 juin 2011 à 19:40
Salut,

Bon, je n ai pas bien compris le début ;o) ceci dit si tu ne peux saisir qu un chiffre ;o) cela me parrait tout à fait normal : il applique le mask que tu lui demande ... ref javadoc de MaskFormatter

GodConan ;o)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
28 juin 2011 à 19:51
bon ;o) je vien de comprendre ton pb desolé pour me msg précédent... ;o)


;o) je pense que tu n as pas écrit tout le code ;o) et qu il manque une premiere instance de JFormattedTextField
Typiquement sous NetBeans il est instancier dans l initComponents()

tu peux peux essayer cette commande sur l objet dejà instancié :
MaskFormatter maskCount = new MaskFormatter("#");
jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(maskCount));



GodConan ;o)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 juin 2011 à 08:43
Oui, c'est vrai, donne nous un peu plus de code, tu dois avoir une erreur quelque part.
0
anasnas Messages postés 14 Date d'inscription lundi 27 juin 2011 Statut Membre Dernière intervention 5 juillet 2011
29 juin 2011 à 14:09
Bonjour,
Voici le code :
public class monPanel extends JPanel {

private JFormattedTextField jft;
private JPanel monPanelBis 

public monPanel() {
super(new BorderLayout());
...
}

public void open(){

try{
MaskFormatter maskCount = new MaskFormatter("#");
jft = new JFormattedTextField(maskCount); 
}catch(ParseException evt){
evt.printStackTrace();
}
......

this.buildMonPanelBis();

.....

this.add(monPanelBis,BorderLayout.CENTER);

}	

private void buildMonPanelBis() {

monPanelBis = new JPanel(new GridLayout(1,5,6,6));
jft.setText("9");
monPanelBis.add(jft);

....

}

}


Je viens de comprendre prkoi ça ne marche pas
j'ai met un mask (#) et aprés j'ecris dans le jft un string (jft.setText("9")) donc c'est pour ça le mask ne marche pas du premier coup ;-)
mais parcontre je ne sais pas comment faire pour detourner ça vu que la fonction setText prend un String ....
et en plus il faut que je met une valeur dans ma jft a l'initialisation
cette valeur je la recupère d'un fichier text ( ici j'ai "9" mais en realité c'est this.file.get(valeur)

j'espère que j'étais clair
Merci d'avance
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
29 juin 2011 à 18:24
Respectes les convention de nommage java STP, Upper CamelCase pour les noms de classes...

Je viens de faire differents teste avec le meme mask et je n arrive vraiment pas a reproduire ton probleme mais encore une fois!! il reste pas mal de troue... fait toi meme un petit exemple minimaliste qui reproduit ton probleme et montre le nous en totalité ;o)

Quoi qu il en soit! habituellement : dans le constructeur (c est un peu pour ca qu il se nomme ainsi) ;o) on met en place toute l ihm, layout et swing... ensuite dans le traitement on assigne des valeurs à afficher...

essaye de séparrer ton init de ton open cela sera surement plus clair... ;o)

GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
30 juin 2011 à 10:50
On en voit souvent des bugs sur les composants java qui sont en fait des erreurs de codage

Bon courage pour la suite et n'oublie pas d'accepter ta réponse.
0
Rejoignez-nous