1

在 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

4

3 回答 3

4

您可以使用Event Api提供 dom 元素事件 。

Event.sinkEvents(mWorkCompleted, Event.ONCHANGE);
        Event.setEventListener(mWorkCompleted, new EventListener() {

            @Override
            public void onBrowserEvent(Event event) {

            }
        });
于 2013-05-31T09:50:47.383 回答
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
                }
        }
于 2013-06-01T11:28:59.777 回答
0

你为什么不参考你UiField的具体类型?据我所知,它需要CheckBox输入上面的代码。然后,您可以使用以下推荐的方式将事件处理程序绑定到 uibinder 输入。

@UiHandler("mWorkCompleted")
void handleCheck(ValueChangeEvent<Boolean> evt)
{
    System.err.println("evt value "+evt.getValue());
}
于 2013-05-31T10:12:17.663 回答