GWT DoubleBox 方法 setValue 覆盖 setText

GWT DoubleBox method setValue overrides setText

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

因此,我使用了 DoubleBox 的 setText 方法,这样它就可以设置字符串值,但它的值应该是有效的数值,所以在使用 setText 之后,我使用了 setValue 方法来设置数值。

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

如果您需要自定义值的格式,请将 ValueBox<Double> 与渲染器和解析器一起使用。您可以使用基于 NumberFormatNumberFormatRenderer,但是没有简单的方法来获取解析器,您必须自己实现一个。

如果您只对显示一个值感兴趣,那么请改用 NumberFormatLabel(或者可能通过存储值和 return 来自解析器的作弊方式,但这听起来很老套)

DoubleBox extends ValueBoxBase<Double>, which defines the setValue 函数。 setValue internally calls setText 使用提供的渲染器渲染值后。 因此它只会在调用 setValue.

后覆盖您设置的文本

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

因此,您必须创建一个类似于 DoubleBox 的 class,并带有自定义 DoubleRenderer,可能还有一个自定义 DoubleParser也是。