2009-06-01 4 views
2

NumberField 및 NumberFormat을 사용하고 있습니다. 로캘을 변경하지 않고 NumberConstants.decimalSeparator() 값을 변경하려면 어떻게해야합니까? 예를 들어 "갖고 싶다." 또는 ","모든 로케일의 소수 구분 기호로 사용됩니다. 사용자 정의 속성 파일 NumberConstants_bla.properties를 만들고 gxt가 표준 NumberConstants_ru_RU.properties 또는 NumberConstants_en_US.properties (현재 로케일에 따라 다름) 대신 강제로 사용할 수 있습니까? 이 파일을 어디에 배치해야합니까?NumberConstants.decimalSeparator() 값을 변경하십시오.

답변

1

자바에서는 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

com.google.gwt.i18n.client.NumberFormat에 대한 Infortunatly 옵션이 없습니다. ( – sandlex

+0

아는 GWT 태그를 주목했습니다. 아무 경험도 없으므로 다른 제안을 할 수 없습니다. – Mark

0

그런 다음 자신의 NumberFormat를 만드는 데 사용 (원하는 소수 구분 기호를 넣어하는) 자신의 NumberConstants을 만들 수 있습니다. 내 자신의 NumberConstants의

예 : MyFormat의

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"; 
    } 
} 

예 :

public class MyFormat extends NumberFormat{ 

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

경고 :이 못생긴 해결하고 국제화에 문제를 일으킬 수 있습니다. 나는 모든 사람들을 위해 동일한 방식으로 표시되는 것으로 가정하는 일부 치수를 형식화하기 위해 사용합니다.

관련 문제