2011-04-08 94 views
0

我想为SmartGWT日历中的每个事件右键单击创建一个上下文菜单,或者只需处理右键单击事件以显示弹出窗口。如何处理SmartGWT日历中特定事件的鼠标右键点击?

calendar.addEventClickHandler(new EventClickHandler() { 
     @Override 
     public void onEventClick(TimetableEventClick event) { 
      // TODO Auto-generated method stub 
     } 
    }); 

上面的代码不让我根据左/右鼠标被点击而产生不同的操作。 有一个处理程序,我可以添加到日历实例:

calendar.addRightMouseDownHandler(new RightMouseDownHandler() { 
     @Override 
     public void onRightMouseDown(RightMouseDownEvent event) { 
      // TODO Auto-generated method stub 
     } 
    }); 

...但我怎样才能得到点击的事件正是信息?没有event.getId()可用,两者都不相似。我想getX(),getY()和玩位置不是一个解决方案?

顺便说一句:处理右键单击GWT仍然是一个坏习惯?我应该离开浏览器的功能吗?

回答

1

我想这是你想要什么:

calendar.addShowContextMenuHandler(new ShowContextMenuHandler() { 
    @Override 
    public void onShowContextMenu(ShowContextMenuEvent event) { 
     event.cancel(); 
     // your code 
    } 
}); 

我不认为hadling GWT中单击鼠标右键是个坏习惯。如果是这样,这些方法将不会在API中被定义为被覆盖。

0
@UiHandler("calendar") 
void onCalendarClick(ClickEvent event) { 
    Date timeSelected = calendar.getActiveTime(); 
    int daySelected = calendar.getActiveDay(); 
} 

可以使用一般的处理程序ClickEvent和使用日历对象getActiveTime()和/或getActiveDay()的函数来获取指针被悬停在细胞中的位置。 上面的代码是使用UI Binder,但与普通的JAVA GWT代码类似。

0

您可以将日历作为参数传递给处理程序的构造函数。当点击被触发后,您将从日历中获取所选日期