2009-06-01 7 views
2

Je travaille avec NumberField et NumberFormat. Comment puis-je changer la valeur NumberConstants.decimalSeparator() sans changer mes paramètres régionaux? Par exemple, je veux avoir "." ou "," en tant que séparateurs décimaux pour tous les paramètres régionaux. Est-il possible de créer le fichier de propriété personnalisé NumberConstants_bla.properties et de le forcer à l'utiliser à la place du standard NumberConstants_ru_RU.properties ou NumberConstants_en_US.properties (selon les paramètres régionaux actuels)? Où dois-je placer ce fichier?Modification de la valeur NumberConstants.decimalSeparator()

Répondre

1

En Java, vous pouvez définir le séparateur décimal à l'aide de DecimalFormatSymbols.

// default symbols for the locale 
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance(); 
// set your required separator 
decimalFormatSymbols.setDecimalSeparator(','); 
// create a decimal format and set your symbols 
DecimalFormat format = new DecimalFormat(); 
format.setDecimalFormatSymbols(decimalFormatSymbols); 
+0

Malheureusement ce n'est pas une option pour com.google.gwt.i18n.client.NumberFormat :( – sandlex

+0

Ah vient de remarquer la balise GWT.Pas d'expérience, donc je ne peux rien suggérer d'autre. – Mark

0

Vous pouvez créer vos propres NumberConstants (dans lequel vous mettez le séparateur décimal que vous voulez) puis utilisez pour créer votre propre NumberFormat.

Exemple de mes propres NumberConstants:

import com.google.gwt.i18n.client.constants.NumberConstants; 

public class MyNumberConstants implements NumberConstants { 
    @Override 
    public String notANumber() { 
    return "NaN"; 
    } 

    @Override 
    public String currencyPattern() { 
    return "#,##0.00\\u00A0\\u00A4"; 
    } 

    @Override 
    public String decimalPattern() { 
    return "#,##0.###"; 
    } 

    @Override 
    public String decimalSeparator() { 
    return "."; 
    } 

    @Override 
    public String defCurrencyCode() { 
    return "EUR"; 
    } 

    @Override 
    public String exponentialSymbol() { 
    return "e"; 
    } 

    @Override 
    public String globalCurrencyPattern() { 
    return "#,##0.00\\u00A0\\u00A4"; 
    } 

    @Override 
    public String groupingSeparator() { 
    return "\\u00A0"; 
    } 

    @Override 
    public String infinity() { 
    return "\u221E"; 
    } 

    @Override 
    public String minusSign() { 
    return "-"; 
    } 

    @Override 
    public String monetaryGroupingSeparator() { 
    return ","; 
    } 

    @Override 
    public String monetarySeparator() { 
    return "\\u00A0"; 
    } 

    @Override 
    public String percent() { 
    return "%"; 
    } 

    @Override 
    public String percentPattern() { 
    return "#,##0\\u00A0%"; 
    } 

    @Override 
    public String perMill() { 
    return "\\u2030"; 
    } 

    @Override 
    public String plusSign() { 
    return "+"; 
    } 

    @Override 
    public String scientificPattern() { 
    return "#E0"; 
    } 

    @Override 
    public String simpleCurrencyPattern() { 
    return "#,##0.00\\u00A0\\u00A4"; 
    } 

    @Override 
    public String zeroDigit() { 
    return "0"; 
    } 
} 

Exemple de MyFormat:

public class MyFormat extends NumberFormat{ 

    public MyFormat(){ 
    super(new MyNumberConstants(),"0.0", CurrencyList.get().getDefault(),true); 
    } 
} 

Attention: ceci est une solution de contournement laid et pourrait causer des problèmes pour i18n. Je l'utilise juste pour mettre en forme une dimension que je suppose être affichée de la même manière pour tout le monde.

Questions connexes