По умолчанию Panel не «тонет» событие onCLick.То есть нажатие на панели фактически не приводит к «ClickEvent», и, следовательно, обработчик не запускается.Чтобы использовать события щелчка с Panel (или, если на то пошло, любым другим виджетом), вы должны сначала вызвать на нем sinkEvents () с соответствующими битами события.
Например:
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());
фрагмент кода сначала «включает» события щелчка для SimplePanel, используя p.sinkEvents(Event.ONCLICK);
, а затем добавляет стандартный ClickHandler к нему.Обратите внимание, что хотя SimplePanel не реализует HasClickHandlers, вы всегда можете добавить обработчик, используя метод addHandler()
.