首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZK地区DecimalBox转换

ZK地区DecimalBox转换
EN

Stack Overflow用户
提问于 2015-03-04 11:33:16
回答 2查看 1.2K关注 0票数 0

帮助。

当我使用ZK的decimalBox而用户的语言环境是IT时,小数点被转换成逗号,这就混淆了我的计算。我怎样才能停止转换?

我使用的是ZK 6.5.7

EN

Stack Overflow用户

发布于 2017-01-10 09:32:15

下面是小数盒的代码,它允许指定用来格式化十进制数字的符号:

代码语言:javascript
运行
复制
package ch.swissquant.zurich.abt.questionnaire.zk;

import java.text.DecimalFormatSymbols;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.zkoss.json.JSONValue;
import org.zkoss.zul.Decimalbox;

public class SymbolDecimalbox extends Decimalbox {

    private static final long serialVersionUID = 1L;

    private DecimalFormatSymbols symbols;
    private Locale locale;

    /** Hide the parent method to make sure org.zkoss.zul.impl.NumberInputElement.getRealSymbols() is never called. */
    @Override
    public void setLocale(Locale locale) {
        this.locale = locale;
    }

    /** Hide the parent method to make sure org.zkoss.zul.impl.NumberInputElement.getRealSymbols() is never called. */
    @Override
    public Locale getLocale() {
        return locale;
    }

    public void setSymbols(DecimalFormatSymbols symbols) {
        this.symbols = symbols;
    }

    public DecimalFormatSymbols getSymbols() {
        return symbols;
    }

    //super//
    @Override
    protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer)
    throws java.io.IOException {
        super.renderProperties(renderer);

        // By overriding setLocale(), we make sure org.zkoss.zul.impl.NumberInputElement.getRealSymbols() is never called.
        renderer.render("localizedSymbols", getRealSymbols());
    }

    /** Send the specified symbols to the UI. */
    private String getRealSymbols() {
        if (symbols != null && locale != null) {
            Map<String, String> map = new HashMap<String, String>();
            map.put("GROUPING",
                    String.valueOf(symbols.getGroupingSeparator()));
            map.put("DECIMAL",
                    String.valueOf(symbols.getDecimalSeparator()));
            map.put("PERCENT", String.valueOf(symbols.getPercent()));
            map.put("PER_MILL", String.valueOf(symbols.getPerMill()));
            map.put("MINUS", String.valueOf(symbols.getMinusSign()));

            final String localeName = locale.toString();
            return JSONValue.toJSONString(new Object[] { localeName, map });
        }
        return null;
    }
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28853373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档