GWT单元树右键单击选择
因此,我创建了一个CellTree,我想做的是选择一个右键单击的单元格,这样当我打开上下文菜单进行操作时,我就会知道我正在使用哪个单元格。也许我做得不对,我可以重写onBrowserEvent方法并检测某人右键单击树的时间,但我无法确定单击的是哪个单元格,因此我可以手动选择它。是否有人找到了此问题的解决方案?解决方案包括两个步骤: 一, 将TreeViewModel添加到CellTree的构造函数中。使用该模型,您可以在树中设置元素的名称。以下是一个来自以下方面的简单实现:GWT单元树右键单击选择,gwt,tree,cell,Gwt,Tree,Cell,因此,我创建了一个CellTree,我想做的是选择一个右键单击的单元格,这样当我打开上下文菜单进行操作时,我就会知道我正在使用哪个单元格。也许我做得不对,我可以重写onBrowserEvent方法并检测某人右键单击树的时间,但我无法确定单击的是哪个单元格,因此我可以手动选择它。是否有人找到了此问题的解决方案?解决方案包括两个步骤: 一, 将TreeViewModel添加到CellTree的构造函数中。使用该模型,您可以在树中设置元素的名称。以下是一个来自以下方面的简单实现: 2当您收到右键单击事
2当您收到右键单击事件时,获取事件目标名称,并将其与您使用模型设置的项目名称进行比较。我找到了一个解决方案,希望这对其他人有所帮助,因为我已经搜索了很长时间。也许有更好的方法,但以下是我实现所需功能的方式: 在树中使用的单元格中,我对onbrowserevent进行了覆盖,以捕获鼠标事件并设置选择模型。使用抽象单元,你可以接收你想要它收听的事件,在我的例子中,我选择了鼠标按下
public class CustomContactCell extends AbstractCell<ContactInfo> {
private SetSelectionModel<ContactInfo> selectionModel;
public CustomContactCell(SetSelectionModel<ContactInfo> selectionModel) {
super("mousedown");
this.selectionModel = selectionModel;
}
@Override
public void render(Context context, ContactInfo value, SafeHtmlBuilder sb) {
...
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element parent, ContactInfo value, NativeEvent event, ValueUpdater<ContactInfo> valueUpdater) {
if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
if (selectionModel != null) {
selectionModel.clear();
selectionModel.setSelected(value, true);
}
}
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}
我有一个TreeView模型。所以我可以执行event.getEventTarget,但没有get name方法或类似的方法。即使我可以从eventtarget中获取名称,我也不确定如何遍历模型或搜索其中的项,我看不到允许这样做的api
public class CustomContactCell extends AbstractCell<ContactInfo> {
private SetSelectionModel<ContactInfo> selectionModel;
public CustomContactCell(SetSelectionModel<ContactInfo> selectionModel) {
super("mousedown");
this.selectionModel = selectionModel;
}
@Override
public void render(Context context, ContactInfo value, SafeHtmlBuilder sb) {
...
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element parent, ContactInfo value, NativeEvent event, ValueUpdater<ContactInfo> valueUpdater) {
if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
if (selectionModel != null) {
selectionModel.clear();
selectionModel.setSelected(value, true);
}
}
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}