Pregunta

Parece que Grupo no hereda de HasClickHandlers y no puedo añadir un clickHandler a DivElement. ¿Hay alguna forma de añadir clickHandler a un DIV?

EDIT:. La razón por la que no puedo usar la etiqueta como que el DIV Quiero podrá hacer clic contiene otro DIV

¿Fue útil?

Solución

Por defecto, 'sumidero' Panel anunciaron el evento onclick. Eso es, al hacer clic en los paneles doesnt realmente resulta en una 'ClickEvent' y por lo tanto la tampoco manejador despedido. Para eventos utilización clic en Panel (o para el caso cualquier otra Widget) primero debe invocar sinkEvents () sobre ella con los bits de eventos adecuados.

Por ejemplo:

SimplePanel p = new SimplePanel();
    p.sinkEvents(Event.ONCLICK);
    p.setTitle("Click me");
    p.setSize("600px", "600px");
    p.addHandler(new ClickHandler(){

        @Override
        public void onClick(ClickEvent event) {

            Window.alert("SimplePanel clicked!");

        }

    }, ClickEvent.getType());

La pieza de código anterior primero 'permite' haga clic en eventos para la SimplePanel utilizando p.sinkEvents(Event.ONCLICK); y luego se va a añadir clickHandler estándar en la misma. Tenga en cuenta que a pesar de que duerma SimplePanel implementar HasClickHandlers, siempre se puede agregar un controlador utilizando el método addHandler().

Otros consejos

Utilice el FocusPanel .

  

Un panel simple que hace que su contenido enfocable, y añade la capacidad de captura de eventos de ratón y teclado.

public class ClickableDiv extends FlowPanel implements HasClickHandlers {
    @Override
    public HandlerRegistration addClickHandler(ClickHandler handler) {
        return addDomHandler(handler, ClickEvent.getType());
    }
}

Eso debería ser todo lo que necesita. addDomHandler se hará cargo de "hundimiento" el tipo de evento para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top