3

通貨、数値、日時の形式を手動で指定する必要があるGWTプロジェクトがあります。これらのカスタマイズには、通貨記号の指定、区切り記号のグループ化、10進数の区切り記号、負の数の形式などが含まれます。これを実現するための最良の方法は何でしょうか。

GWT NumberFormatクラスを使用する必要がありますか?NumberFormatは、定数インターフェイスなどのGWT国際化構造を広範囲に使用します。したがって、カスタムの数値形式マスクを指定した場合でも、現在のロケールを確認し、通貨記号、10進記号、千単位の区切り記号を使用します。レイトバウンドで国際化された「NumberFormat」インスタンス。

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

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

4

2 に答える 2

2

カスタム通貨フォーマット($記号の前の「US」を削除)にNumberFormat.getFormat(String format)を使用しました。

私のアプリケーションでは、結果をパブリック定数に入れました。「format」引数とすべてのUI固有の文字列をi18nリソースバンドルに保存しました。

于 2009-08-27T17:28:56.767 に答える
0
パブリッククラスMyNumberFormatはNumberFormat{を拡張します

    プライベート静的CurrencyCodeMapConstantscurrencyCodeMapConstants= GWT.create(CurrencyCodeMapConstants.class);

    保護されたMyNumberFormat(文字列パターン、CurrencyData cdata、
            boolean userSuppliedPattern){
        super(pattern、cdata、userSuppliedPattern);     
    }

    public static NumberFormat getCurrencyFormat(String currencyCode){     
        新しいMyNumberFormat(defaultNumberConstants.currencyPattern()、
            lookupCurrency(currencyCode)、false);
      }

      プライベート静的CurrencyDatalookupCurrency(文字列currencyCode){
        CurrencyData currencyData = CurrencyList.get()。lookup(currencyCode);

        マップcurrencyMap=currencyCodeMapConstants.currencyMap();       

        文字列コード=currencyData.getCurrencyCode();
        //文字列記号=currencyData.getCurrencySymbol();
        文字列記号=currencyMap.get(currencyCode);
        intfractionDigits = currencyData.getDefaultFractionDigits();
        文字列portableSymbol=currencyData.getPortableCurrencySymbol();       

        toCurrencyData(code、symbol、fractionDigits、portableSymbol);に戻ります。
      }

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

GXTグリッドで使用できます

        column = new ColumnConfig( "precioventa"、constants.modeloPrendaPrecioVenta()、100);
        column.setAlignment(Horizo​​ntalAlignment.RIGHT);        
        column.setNumberFormat(MyNumberFormat.getCurrencyFormat( "PEN"));        
        columns.add(column);
于 2011-08-08T16:14:42.437 に答える