最简单的方法是创建一个继承ValueBox的新文本框小部件。如果您采用这种方式,则无需手动转换任何字符串值。ValueBox会处理所有这一切。
要输入BigDecimal值,您可以执行以下 *** 作:
BigDecimal value = myTextBox.getValue();
您的 BigDecimalBox.java :
public class BigDecimalBox extends ValueBox<BigDecimal> { public BigDecimalBox() { super(document.get().createTextInputElement(), BigDecimalRenderer.instance(), BigDecimalParser.instance()); }}
然后你的 BigDecimalRenderer.java
public class BigDecimalRenderer extends AbstractRenderer<BigDecimal> { private static BigDecimalRenderer INSTANCE; public static Renderer<BigDecimal> instance() { if (INSTANCE == null) { INSTANCE = new BigDecimalRenderer(); } return INSTANCE; } protected BigDecimalRenderer() { } public String render(BigDecimal object) { if (null == object) { return ""; } return NumberFormat.getDecimalFormat().format(object); }}
还有你的 BigDecimalParser.java
package com.google.gwt.text.client;import com.google.gwt.i18n.client.NumberFormat;import com.google.gwt.text.shared.Parser;import java.text.ParseException;public class BigDecimalParser implements Parser<BigDecimal> { private static BigDecimalParser INSTANCE; public static Parser<BigDecimal> instance() { if (INSTANCE == null) { INSTANCE = new BigDecimalParser(); } return INSTANCE; } protected BigDecimalParser() { } public BigDecimal parse(CharSequence object) throws ParseException { if ("".equals(object.toString())) { return null; } try { return new BigDecimal(object.toString()); } catch (NumberFormatException e) { throw new ParseException(e.getMessage(), 0); } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)