GWT DoubleBox方法setValue覆盖setText

时间:2016-07-27 11:25:35

标签: gwt

在屏幕中,DoubleBox值需要显示为以美元为前缀的金额。

所以,我使用了DoubleBox的setText方法,以便允许设置字符串值,但它的值应该是有效的数值,所以在使用setText之后,我使用了setValue方法来设置数值。

但是,现在在使用setValue之后,在屏幕中,只有数值apears并忽略了setText的行为。任何建议!

2 个答案:

答案 0 :(得分:2)

DoubleBox扩展了ValueBoxBase<Double>,它定义了setValue函数。 使用提供的渲染器渲染值后,setValue在内部调用setText。 因此,在调用setValue后,它会覆盖您设置的文字。

为了能够自定义文本格式,您必须提供自定义渲染器。 不幸的是,只有DoubleBox的默认构造函数,它不允许您提供自定义渲染器: https://gwt.googlesource.com/gwt/+/2.7.0/user/src/com/google/gwt/user/client/ui/DoubleBox.java

因此,您必须使用自定义DoubleBox创建类似于DoubleRenderer的类,并且可能还需要自定义DoubleParser

答案 1 :(得分:1)

如果您需要自定义值的格式,请将SELECT spc.customer_no, spc.contract, spc.customer_part_no, csp.configuration_id, spc.catalog_no FROM superproduct spc LEFT JOIN customersomething csp ON spc.customer_no = csp.customer_no UNION ALL SELECT csp.customer_no, csp.contract, csp.customer_part_no, csp.configuration_id, csp.catalog_no FROM customersomething csp LEFT JOIN superproduct spc ON spc.customer_no = csp.customer_no AND spc.customer_no IS NULL 与渲染器和解析器一起使用。您可以使用基于(score_counter.to_f / total_score.to_f) * 100 的{​​{1}},但是没有简单的方法来获取解析器,您必须自己实现。

如果你只对显示一个值感兴趣,那么请改用ValueBox<Double>(或者可能通过存储值并通过解析器返回来作弊,但这听起来像是hackish)