在屏幕中,DoubleBox值需要显示为以美元为前缀的金额。
所以,我使用了DoubleBox的setText方法,以便允许设置字符串值,但它的值应该是有效的数值,所以在使用setText之后,我使用了setValue方法来设置数值。
但是,现在在使用setValue之后,在屏幕中,只有数值apears并忽略了setText的行为。任何建议!
答案 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)