我正在使用 NumberField 和 NumberFormat。如何在不更改语言环境的情况下更改 NumberConstants.decimalSeparator() 值?例如我想要“。” 或 "," 作为所有语言环境的小数分隔符。是否可以创建自定义属性文件 NumberConstants_bla.properties 并强制 gxt 使用它而不是标准 NumberConstants_ru_RU.properties 或 NumberConstants_en_US.properties(取决于当前语言环境)?我应该把这个文件放在哪里?
问问题
1835 次
2 回答
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);
于 2009-06-01T14:36:41.017 回答
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);
}
}
警告:这是一个丑陋的解决方法,可能会导致 i18n 出现问题。我只是用它来格式化一些我假设每个人都以相同方式显示的维度。
于 2013-03-28T15:07:28.123 回答