Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SmartGWT日历中处理鼠标右键单击特定事件?_Java_Gwt_Calendar_Smartgwt_Right Click - Fatal编程技术网

Java 如何在SmartGWT日历中处理鼠标右键单击特定事件?

Java 如何在SmartGWT日历中处理鼠标右键单击特定事件?,java,gwt,calendar,smartgwt,right-click,Java,Gwt,Calendar,Smartgwt,Right Click,我想为SmartGWT日历中的每个事件在右键单击下创建一个上下文菜单,或者简单地处理右键单击事件以显示一个弹出窗口 calendar.addEventClickHandler(new EventClickHandler() { @Override public void onEventClick(TimetableEventClick event) { // TODO Auto-generated method stub }

我想为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中处理右键点击仍然是一个坏习惯吗?是否应将其功能保留给浏览器?

日历的右键单击功能本机不存在

这篇文章很好地总结了GWT在这方面的不足以及克服它的方法


我想这就是你想要的:

calendar.addShowContextMenuHandler(new ShowContextMenuHandler() {
    @Override
    public void onShowContextMenu(ShowContextMenuEvent event) {
       event.cancel();
       // your code
    }
});
我不认为hadling在GWT中右键单击是一个坏习惯。如果是这样,这些方法将不会在要重写的API中定义

@UiHandler("calendar")
void onCalendarClick(ClickEvent event) {
    Date timeSelected = calendar.getActiveTime();
    int  daySelected = calendar.getActiveDay();
}
使用常规ClickEvent处理程序,并使用日历对象getActiveTime()和/或getActiveDay()的函数获取指针悬停在其上的单元格的位置。
上面的代码使用的是UI活页夹,但与普通JAVA GWT代码类似。

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