2011-04-08 93 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

您可以將日曆作爲參數傳遞給處理程序的構造函數。當點擊被觸發後,您將從日曆中獲取所選日期