2009-06-01 62 views
2

我正在使用NumberField和NumberFormat。 如何在不更改我的語言環境的情況下更改NumberConstants.decimalSeparator()值?比如我想要「。」或「,」作爲所有語言環境的小數點分隔符。 是否有可能創建自定義屬性文件NumberConstants_bla.properties和強制gxt使用它而不是標準的NumberConstants_ru_RU.properties或NumberConstants_en_US.properties(取決於當前的語言環境)?我應該在哪裏放置這個文件?更改NumberConstants.decimalSeparator()值

回答

1

在Java中,您可以使用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

Infortunatly它不是com.google.gwt.i18n.client.NumberFormat的選項:( – sandlex 2009-06-01 15:09:14

0

您可以創建自己的NumberConstants(在你把你想要的小數點分隔符),然後用它來創建自己的NumberFormat。

我自己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"; 
    } 
} 

MyFormat的例子:

public class MyFormat extends NumberFormat{ 

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

警告:這是一個醜陋的解決辦法,並可能導致對國際化的問題。我使用它只是爲了格式化一些我認爲以相同方式展示給每個人的維度。