2009-06-03 1 views
3

GWTプロジェクトでは、通貨、番号、日時の書式を手動で指定する必要があります。これらのカスタマイズには、通貨記号の指定、セパレータ、小数点のセパレータのグループ化、負の数値書式のグループ化などが含まれます。これを達成する最良の方法は何でしょうか?GWTでカスタム通貨、番号、日時の形式を指定する良い方法は何ですか?

GWT NumberFormatクラスを使用する必要がありますか? NumberFormatは、ConstantsインターフェイスなどのようなGWT国際化構文を広範に使用します。したがって、カスタム数値書式マスクを指定すると、現在のロケールを見て、これらの通貨記号、decimal symol、および1000区切り記号を使用します。後でバインドされ、国際化された 'NumberFormat'インスタンスです。

私の質問は:どのようにあなたはこれを達成するか? NumberFormatの機能を再実装しますか?あなたはそれから派生し、保護されたコンストラクタを使用して、あなた自身を作成し​​たある種のカスタムNumberConstantのインスタンスに渡しますか?どうやってi18nのNumberConstantsインスタンスを取得し、それを使って独自のインスタンスを作成し、必要なものだけをオーバーライドするのですか?

どのようにこの問題にアプローチしますか?

答えて

2

私はカスタム通貨書式設定($記号の前に "US"を削除)にNumberFormat.getFormat(String形式)を使用しました。

私のアプリケーションでは、結果をpublic定数に入れました。 i18nリソースバンドルとUI固有のすべての文字列に "format"引数を格納しました。

+0

GXTグリッドに使用することができます。すべての種類の奇妙なハッキングを持っていたが、今は大丈夫です。 –

0
 
public class MyNumberFormat extends NumberFormat{ 

    private static CurrencyCodeMapConstants currencyCodeMapConstants = GWT.create(CurrencyCodeMapConstants.class); 

    protected MyNumberFormat(String pattern, CurrencyData cdata, 
      boolean userSuppliedPattern) { 
     super(pattern, cdata, userSuppliedPattern);  
    } 

    public static NumberFormat getCurrencyFormat(String currencyCode) {  
     return new MyNumberFormat(defaultNumberConstants.currencyPattern(), 
      lookupCurrency(currencyCode), false); 
     } 

     private static CurrencyData lookupCurrency(String currencyCode) { 
     CurrencyData currencyData = CurrencyList.get().lookup(currencyCode); 

     Map currencyMap = currencyCodeMapConstants.currencyMap();  

     String code = currencyData.getCurrencyCode(); 
     //String symbol = currencyData.getCurrencySymbol(); 
     String symbol = currencyMap.get(currencyCode); 
     int fractionDigits = currencyData.getDefaultFractionDigits(); 
     String portableSymbol = currencyData.getPortableCurrencySymbol();  

     return toCurrencyData(code, symbol, fractionDigits, portableSymbol); 
     } 

     public static native CurrencyData toCurrencyData(String code, String symbol, int fractionDigits, String portableSymbol) /*-{ 
     return [ code, symbol, fractionDigits, portableSymbol ]; 
     }-*/; 
} 

は、私は似た何かをやってしまった

 
     column = new ColumnConfig("precioventa", constants.modeloPrendaPrecioVenta(), 100); 
     column.setAlignment(HorizontalAlignment.RIGHT);   
     column.setNumberFormat(MyNumberFormat.getCurrencyFormat("PEN"));   
     columns.add(column); 
+0

これがなぜ機能するのか、それがどう違うのか説明しますか? –

関連する問題