Voici ce que je dois: un champ de texte dans lequel l'utilisateur peut entrer soit:Mise en forme textfield sur le focus perdu fondée sur la condition
1234567890 ou 11234567890
et il doit être formaté en conséquence comme
123 -456-7890 ou 1 123-456-7890
Essentiellement un numéro de téléphone avec ou sans code de pays. Jusqu'à présent, j'ai un code qui effectue les opérations suivantes:
if (isPhone && !getText().equals(BLANK_STRING)) {
int phoneLength = getText().replaceAll("[^0-9]", "").length();
String text = getText().replaceAll("[^0-9]", "");
//We call the method to format the entered text after we left the field
setPhoneFormatMask(phoneLength, text);
}
private void setPhoneFormatMask(int length, String text) {
System.out.println("length = " + length);
System.out.println("text = " + text);
switch (length) {
case 10:
try {
System.out.println("Setting mask");
numberMaskFormat.setMask("###-###-####");
} catch (ParseException ex) {
Logger.getLogger(WWNumericFormattedTextField.class.getName()).log(Level.SEVERE, null, ex);
}
break;
case 11:
try {
System.out.println("setting mask 2");
numberMaskFormat.setMask("# ###-###-####");
} catch (ParseException ex) {
Logger.getLogger(WWNumericFormattedTextField.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
setFormatter(numberMaskFormat);
System.out.println("n:" + numberMaskFormat.getMask());
setText(text);
}
@Override
public void focusGained(FocusEvent e) {
if (isPhone) {
try {
numberMaskFormat.setMask("**************");
} catch (ParseException ex) {
Logger.getLogger(WWFormattedTextField.class.getName()).log(Level.SEVERE, null, ex);
}
setFormatter(numberMaskFormat);
}
}
Sortie de la console:
//Application launched
focus gained
n2:**************
//I entered 9051234567 and tabbed out
Focus lost
length = 10
text = 9051234657
Setting mask
n:###-###-####
Formatted text = - -
//Tabbed back in
focus gained
n2:**************
//Entered 19051234567 and tabbed out
Focus lost
length = 11
text = 19051234567
setting mask 2
n:# ###-###-####
Formatted text =
Je dois conseiller/aide/conseils sur la façon de formater le texte dans le JFormattedTextField après la mise au point est perdue et le formatage varie en fonction du nombre de chiffres ont été saisis.
Puis, lorsque votre champ de texte formaté gagne à nouveau l'accent: sera-t doit changer sa forme de format texte '123-456- 7890 'à' 1234567890'? exigence d'option filaire !! – Sage
En tout cas jeter un oeil à la réponse. voir si cela aide à répondre à vos besoins – Sage