在gwt上编程,应该有可能将一个更改事件附加到一个输入元素,就像这样在Java:
@UiField
InputElement mWorkCompleted;
并在.gwt.xml
- 文件:
<input type="checkbox" name="workCompleted" ui:field="mWorkCompleted"
class="custom" />
修改1:
当我阅读其余代码时,会遇到更多挑战:使用jQuery将其呈现为屏幕,这就是使用InputElement
的原因。 Java文件的一部分:
@Override
public void setWorkCompleted(boolean completed) {
mWorkCompleted.setChecked(completed);
JQuery.create(mWorkCompleted).checkboxradio(JQuery.REFRESH);
}
如何实现这种简单的外观? jQuery版本1.8.1
答案 0 :(得分:4)
您可以使用Event Api提供dom元素事件。
Event.sinkEvents(mWorkCompleted, Event.ONCHANGE);
Event.setEventListener(mWorkCompleted, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
}
});
答案 1 :(得分:0)
为什么不将您的UiField
引用其具体类型?据我所知,它需要在上面的代码中输入CheckBox
。然后,您可以使用以下推荐的方法将事件处理程序绑定到uibinder输入。
@UiHandler("mWorkCompleted")
void handleCheck(ValueChangeEvent<Boolean> evt)
{
System.err.println("evt value "+evt.getValue());
}
答案 2 :(得分:0)
您可以通过已定义的面板或小部件(如
)添加此元素yourWidget.add(new HTML("<input type = 'checkbox'/>"))
为您的小部件添加处理程序。 (更喜欢DOMHandler)。然后检查它的值如
public void onClick(final ClickEvent event) {
EventTarget eventTarget = event.getNativeEvent().getEventTarget();
Node node = Node.as(eventTarget);
if (Element.is(node)) {
if ("".equalsIgnoreCase(elem.getAttribute("checked"))) {
elem.setAttribute("checked", "on");
// Do something
}
else if ("on".equalsIgnoreCase(elem.getAttribute("checked"))) {
elem.removeAttribute("checked");
// Do something
}
}