2009-06-03 6 views
3

통화, 숫자 및 날짜/시간 형식을 수동으로 지정해야하는 GWT 프로젝트가 있습니다. 이러한 사용자 지정에는 통화 기호 지정, 분리 기호, 소수 구분 기호, 음수 서식 등이 포함됩니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?GWT에서 맞춤 통화, 숫자 및 날짜/시간 형식을 지정하는 좋은 방법은 무엇입니까?

GWT NumberFormat 클래스를 사용해야합니까? NumberFormat은 Constants 인터페이스와 같은 GWT 국제화 구문을 광범위하게 사용합니다. 따라서 사용자 정의 숫자 형식 마스크를 지정하면 현재 로케일을 살펴보고 해당 로케일, 십진수 기호 및 천 단위 구분 기호를 사용합니다. 후기 바인딩 및 국제화 된 '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

왜 이것이 작동하는지, 어떻게 다르게 작동하는지 설명 하시겠습니까? –

관련 문제