java纯GWT,事件转换
所以,我在GWT中有一个“FlexTable”,我需要在右键单击某个单元格时下拉操作列表。在鼠标左键单击以检索单元格的“rowIndex”时,我只需使用ClickEvent方法“getCellForEvent(event)”。getRowIndex()。但在纯GWT中没有右键单击处理程序。所以我决定使用ContextMenuHandler,它需要ContextMenuEvent。当然,我不能将ContextMenuEvent放入ClickEvent方法“getCellForEvent”中。这个案子有什么解决办法吗?或者也许有人知道右键点击“FlexTable”下拉列表的更简单方法
# 1 楼答案
如果使用CellTable或DataGrid小部件,则可以处理在单击单元格时触发的
CellPreviewEvent
,还可以告诉您事件发生在哪个行/单元格中。下面是一些代码:# 2 楼答案
实际上,您可以使用click handler检查单击了什么按钮,左边、右边或中间,您需要做的事情如下:
# 3 楼答案
我已经为CellTable或DataGrid小部件完成了这项工作,但没有为FlexTable。对于前者,我将一个handler对象应用于整个网格小部件,并使用事件计算出事件发生的行或单元格。我看不出FlexTable如何做到这一点
使用FlexTable,一个技巧是为每个单元格创建一个handler对象,并在创建时告诉它单元格/行。大概是这样的:
在上面的例子中,
cell
需要是一个小部件。因此,您需要在HTMLTable中获取元素(FlexTable exends HTMLTable是一个普通的HTML表格元素),并将其包装为一个小部件。我不知道怎么做,但这是可能的还有一件事,您需要防止浏览器弹出自己的上下文菜单。我将其添加到
body
标记中的html文件中: