java将eventhandler添加到自定义文本框字段
你好
我有一个自定义文本框,它有一个指示符号TextBox。用户界面。xml文件以及IndicatorTextBox。java文件。 通常,在文本框中添加一个evenhadler很简单
这是我的主要任务。java文件
@UiHandler("txtFirstName")
void onTxtFirstNameKeyUp(KeyUpEvent event){
validateFields();
}
如果txtFirstName是我正在添加到此页面的带有标签的自定义文本框,我将如何添加处理程序。? 因此,换句话说,txtFirstnName不是@UiField TextBox txtFirstName,而是指示符textfield txtFirstName
指示灯显示框。java文件如下所示
import com.google.gwt.core.client.GWT;
公共类IndicatorTextField扩展了复合实现HasText{
public interface Binder extends UiBinder<Widget, IndicatorTextField> {
}
private static final Binder binder = GWT.create(Binder.class);
public interface Style extends CssResource{
String textStyling();
String requiredInputLabel();
String colorNotValidated();
}
@UiField Style style;
@UiField Label label;
@UiField TextBox textBox;
public IndicatorTextField()
{
initWidget(binder.createAndBindUi(this));
}
public void setBackgroundValidateTextbox(boolean validated)
{
if(validated)
{
textBox.getElement().addClassName(style.colorNotValidated());
}
else
{
textBox.getElement().removeClassName(style.colorNotValidated());
}
}
@Override
public String getText() {
return label.getText();
}
@Override
public void setText(String text) {
label.setText(text);
}
# 1 楼答案
您的IndicatorTextField首先必须实现HasKeyUpHandlers接口,从文本框捕获KeyUpEvents并将其发送到其处理程序
然后在主java类中,如果您使用uiBinder创建这个IndicatorTextField,那么您只需以常规方式向其添加一个UiHandler
如果您是通过调用构造函数来创建的,那么就对其调用addKeyUpHandler
# 2 楼答案
据我所知,UiBinder根据方法签名中的事件类型创建调用,因此您的IndicatorTextField必须实现HasAllKeyHandlers或只是扩展FocusWidget