我在页面上有几个文本框,用户可以输入一些数值;但是,尽我所能,我不能用默认值填充这些文本框 - 特别是我希望在页面加载时显示0.0
。
以下是我创建它们以及我尝试过的方法 -
GroupSection engineering_group = new GroupSection();
KSTextBox engrDesignTextBox = new KSTextBox();
engrDesignTextBox.setWidth("2.875em");
//engrDesignTextBox.setWatermarkText("0.0"); ==> this works, but not what I need
//engrDesignTextBox.setText("0.0"); ==> this doesn't work
engrDesignTextBox.setValue("0.0"); // doesn't work either
KSTextBox engrScienceTextBox = new KSTextBox();
engrScienceTextBox.setWidth("2.875em");
//engrScienceTextBox.setWatermarkText("0.0"); ==> this works, but not what I need
//engrScienceTextBox.setText("0.0"); ==> this doesn't work
engrScienceTextBox.setValue("0.0"); // doesn't work either
我想我需要附加一个“onload”事件监听器,然后在那里尝试setText?对于一些应该相当简单的事情来说,这似乎有些过分。
顺便说一下,我已经为这两个文本框添加了onBlurHandlers,它们按预期工作(参见下面的代码)
如果用户在EMPTY时单击或标签文本框,则以下代码将只插入0.0
。
engrDesignTextBox.addBlurHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent blurEvent) {
if(((KSTextBox)blurEvent.getSource()).getText().length() < 1) {
((KSTextBox)blurEvent.getSource()).setText("0.0");
}
}
});
engrScienceTextBox.addBlurHandler(new BlurHandler() {
@Override
public void onBlur(BlurEvent blurEvent) {
if(((KSTextBox)blurEvent.getSource()).getText().length() < 1) {
((KSTextBox)blurEvent.getSource()).setText("0.0");
}
}
});
编辑:这里要求的是我如何在KSTextBox中定义setText和setValue方法
public class KSTextBox extends TextBox implements HasWatermark {
.
.
.
@Override
public void setText(String text) {
String oldValue = super.getText();
if(hasWatermark) {
if(text == null || (text != null && text.isEmpty())){
super.setText(watermarkText);
addStyleName("watermark-text");
watermarkShowing = true;
}
else{
super.setText(text);
removeStyleName("watermark-text");
watermarkShowing = false;
}
}
else{
super.setText(text);
}
ValueChangeEvent.fireIfNotEqual(this, oldValue, text);
}
@Override
public void setValue(String value) {
if(hasWatermark) {
if(value == null || (value != null && value.isEmpty())){
super.setValue(watermarkText);
addStyleName("watermark-text");
watermarkShowing = true;
}
else{
super.setValue(value);
removeStyleName("watermark-text");
watermarkShowing = false;
}
}
else{
super.setValue(value);
}
}
那么,回到原来的问题,我该怎么办我最初将这些文本框的值设置为0.0
?
答案 0 :(得分:0)
这应该有用。非常令人惊讶。
在你执行setText或setValue后,是否有其他代码可能会重置该值?
尝试在托管模式下调试它.Put a setText中的断点,并查看它被调用的时间和次数